

Integer literal syntax >>-+-decimal_constant-----+--+---------------+----------------->< +-octal_constant-------+ +-+-l--+--+---+-+ '-hexadecimal_constant-' | +-L--+ +-u-+ | | +-ll-+ '-U-' | | '-LL-' | '-+-u-+--+----+-' '-U-' +-l--+ +-L--+ +-ll-+ '-LL-'
Both of the two features have the corresponding extension
parts:
| Representation | Suffix | Possible data types | |||||
|---|---|---|---|---|---|---|---|
| int | unsigned int | long int | unsigned long int | ![]() |
![]() |
||
| Decimal | None | + | + | +2 | |||
| Octal, Hex | None | + | + | + | + | ||
| All | u or U | + | + | ||||
| Decimal | l or L | + | + | ||||
| Octal, Hex | l or L | + | + | ||||
| All | Both u or U and l or L | + | |||||
| Decimal | ll or LL | + | + | ||||
| Octal, Hex | ll or LL | + | + | ||||
| All | Both u or U and ll or LL | + | |||||
Notes:
|
|||||||
A decimal literal without a u or U in
the suffix is represented by the unsigned long long int type
if both of the following conditions are satisfied. In this case, the
compiler generates a message to indicate that the value of the literal
is too large for any signed integer type.

To strictly conform to the C++11 standard, the compiler introduces
the extended integer safe behavior to ensure that a signed value never
becomes an unsigned value after a promotion. After you enable this
behavior, if a decimal integer literal that does not have a suffix
containing u or U cannot be represented
by the long long int type, the compiler issues an
error message to indicate that the value of the literal is out of
range. The extended integer safe behavior is the only difference between
the C99 long long feature with the associated IBM extensions
and the C99 long long feature.

| Representation | Suffix | Possible data types | |||||
|---|---|---|---|---|---|---|---|
| int | unsigned int | long int | unsigned long int | long long int | unsigned long long int | ||
| Decimal | None | + | + | ||||
| Octal, Hex | None | + | + | + | + | ||
| All | u or U | + | + | ||||
| Decimal | l or L | + | |||||
| Octal, Hex | l or L | + | + | ||||
| All | Both u or U and l or L | + | |||||
| Decimal | ll or LL | + | +1 | ||||
| Octal, Hex | ll or LL | + | + | ||||
| All | Both u or U and ll or LL | + | |||||
Note:
|
|||||||
A decimal integer literal contains any of the digits 0 through 9. The first digit cannot be 0. Integer literals beginning with the digit 0 are interpreted as an octal integer literal rather than as a decimal integer literal.
Decimal integer literal syntax .--------------. V | >>-digit_1_to_9----digit_0_to_9-+------------------------------><
See the following examples of decimal literals:
485976
5
-433132211
+20
A hexadecimal integer literal begins with the 0 digit followed by either an x or X, followed by any combination of the digits 0 through 9 and the letters a through f or A through F. The letters A (or a) through F (or f) represent the values 10 through 15, respectively.
Hexadecimal integer literal syntax .------------------. V | >>-+-0x-+----+-digit_0_to_f-+-+-------------------------------->< '-0X-' '-digit_0_to_F-'
See the following examples of hexadecimal integer literals:
0x3b24
0XF96
0x21
0x3AA
0X29b
0X4bD
An octal integer literal begins with the digit 0 and contains any of the digits 0 through 7.
Octal integer literal syntax .--------------. V | >>-0----digit_0_to_7-+-----------------------------------------><
See the following examples of octal integer literals:
0
0125
034673
03245