Next: , Up: Constants   [Contents][Index]

### 12.1 Integer Constants

An integer constant consists of a number to specify the value, followed optionally by suffix letters to specify the data type.

The simplest integer constants are numbers written in base 10 (decimal), such as `5`, `77`, and `403`. A decimal constant cannot start with the character ‘0’ (zero) because that makes the constant octal.

You can get the effect of a negative integer constant by putting a minus sign at the beginning. Grammatically speaking, that is an arithmetic expression rather than a constant, but it behaves just like a true constant.

Integer constants can also be written in octal (base 8), hexadecimal (base 16), or binary (base 2). An octal constant starts with the character ‘0’ (zero), followed by any number of octal digits (‘0’ to ‘7’):

```0      // zero
077    // 63
0403   // 259
```

Pedantically speaking, the constant `0` is an octal constant, but we can think of it as decimal; it has the same value either way.

A hexadecimal constant starts with ‘0x’ (upper or lower case) followed by hex digits (‘0’ to ‘9’, as well as ‘a’ through ‘f’ in upper or lower case):

```0xff   // 255
0XA0   // 160
0xffFF // 65535
```

A binary constant starts with ‘0b’ (upper or lower case) followed by bits (each represented by the characters ‘0’ or ‘1’):

```0b101  // 5
```

Binary constants are a GNU C extension, not part of the C standard.

Sometimes a space is needed after an integer constant to avoid lexical confusion with the following tokens. See Invalid Numbers.

Next: , Up: Constants   [Contents][Index]