3.3.2 Number Declarations
Discussion: {
AI05-0299-1}
If a value or other property of a construct is required
to be
static that means it is required to be determined prior
to execution. A
static expression is an expression whose value
is computed at compile time and is usable in contexts where the actual
value might affect the legality of the construct. This is fully defined
in subclause
4.9.
Syntax
Name Resolution Rules
Legality Rules
{
AI05-0299-1}
The
static_expression
given for a number declaration shall be a static expression, as defined
by subclause
4.9.
Static Semantics
The named number denotes a value of type
universal_integer
if the type of the
static_expression
is an integer type. The named number denotes a value of type
universal_real
if the type of the
static_expression
is a real type.
The value denoted by the named number is the value
of the
static_expression,
converted to the corresponding universal type.
Dynamic Semantics
Proof: Since the
static_expression
was evaluated at compile time.
Examples
Examples of number
declarations:
Two_Pi :
constant := 2.0*Ada.Numerics.Pi; --
a real number (see A.5)
{
AI95-00433-01}
Max :
constant := 500; --
an integer number
Max_Line_Size :
constant := Max/6; --
the integer 83
Power_16 :
constant := 2**16; --
the integer 65_536
One, Un, Eins :
constant := 1; --
three different names for 1
Extensions to Ada 83
We now allow a static expression
of any numeric type to initialize a named number. For integer types,
it was possible in Ada 83 to use 'Pos to define a named number, but there
was no way to use a static expression of some nonuniversal real type
to define a named number. This change is upward compatible because of
the preference rule for the operators of the root numeric types.
Wording Changes from Ada 83
We have moved the syntax rule into this subclause.
AI83-00263 describes the elaboration of a number
declaration in words similar to that of an
object_declaration.
However, since there is no expression to be evaluated and no object to
be created, it seems simpler to say that the elaboration has no effect.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe