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:
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 */