In C source code, a *literal*
is a token that denotes a fixed value, which may be an integer , a floating-point number, a character, or a string. A
literal’s type is determined by its value and its notation.

The literals discussed here are different from *compound literals* , which were introduced in the C99 standard. Compound
literals are ordinary modifiable objects, similar to variables. For a
full description of compound literals and the special operator used to
create them, see Chapter 5.

An *integer constant* can be
expressed as an ordinary decimal numeral, or as a numeral in octal or
hexadecimal notation. You must specify the intended notation by a
prefix.

A *decimal constant* begins
with a nonzero digit. For example, `255`

is the decimal constant for the base-10
value 255.

A number that begins with a leading zero is interpreted as an
*octal constant*. Octal (or base
eight) notation uses only the digits from 0 to 7. For example,
`047`

is a valid octal constant
representing 4 × 8 + 7, and is equivalent with the decimal constant
`39`

. The decimal constant `255`

is equal to the octal constant `0377`

.

A *hexadecimal constant*
begins with the prefix `0x`

or
`0X`

. The hexadecimal digits A to F
can be upper- or lowercase. For example, `0xff`

, `0Xff`

, `0xFF`

, and `0XFF`

represent the same hexadecimal
constant, which is equivalent to the decimal constant `255`

.

Because the integer constants you define will eventually be used in expressions and declarations, their type is important. ...

Start Free Trial

No credit card required