Node:Constant expressions, Previous:const, Up:Constants
You can declare constant expressions explicitly as a particular type of
value, such as a long integer, a float, a character, or a hexadecimal
value, with certain typographical conventions. For example, it is
possible to declare a value explicitly as a long by placing the letter
L
after the numeric constant. For example:
#define MY_LONG1 23L; #define MY_LONG2 236526598L;
Similarly, you can declare a value to be a float by appending the letter
F
to it. Of course, numeric constants containing a decimal
point are automatically considered floats. The following constants
are both floating-point numbers:
#define MY_FLOAT1 23F; #define MY_FLOAT2 23.5001;
You can declare a hexadecimal (base-16) number by prefixing
it with 0x
; you can declare an octal (base-8) number
by prefixing it with 0
. For example:
int my_hex_integer = 0xFF; /* hex FF */ int my_octal_integer = 077; /* octal 77 */
You can use this sort of notation with strings and character constants
too. ASCII character values range from 0 to 255. You can print any character
in this range by prefixing a hexadecimal value with \x
or an octal
value with \
. Consider the following code example, which demonstrates
how to print the letter A
, using either a hexadecimal character code
(\x41
) or an octal one (\101
).
#include <stdio.h> /* To shorten example, not using argp */ int main () { printf ("\\x41 hex = \x41\n"); printf ("\\101 octal = \101\n"); return 0; }
The preceding code prints the following text:
\x41 hex = A \101 octal = A
Of course, you can assign a variable declared with the const
qualifier (the first kind of "constant" we examined) a constant
expression declared with one of the typographical expressions above.
For example:
const int my_hex_integer = 0xFF; /* hex FF */ const int my_octal_integer = 077; /* octal 77 */