Arduino

Buy | Download | Getting Started | Learning | Reference | Hardware | FAQ

Blog » | Forum » | Playground »

Reference Language (extended) | Libraries | Comparison | Board

## Integer Constants

Integer constants are numbers used directly in a sketch, like `123`. By default, these numbers are treated as int's but you can change this with the U and L modifiers (see below).

Normally, integer constants are treated as base 10 (decimal) integers, but special notation (formatters) may be used to enter numbers in other bases.

    Base               Example    Formatter        Comment

    10 (decimal)           123    none

    2 (binary)        B1111011    capital 'B'      only works with 8 bit values
                                                   characters 0-1 valid

    8 (octal)             0173    leading zero     characters 0-7 valid

    16 (hexadecimal)      0x7B    leading 0x       characters 0-9, A-F, a-f valid

Decimal is base 10, this is the common-sense math with which you are aquainted.

Example: `101 == 101 decimal ((1 * 10^2) + (0 * 10^1) + 1)`

Binary is base two. Only characters 0 and 1 are valid.

`Example: B101 == 5 decimal ((1 * 2^2) + (0 * 2^1) + 1)`

The binary formatter only works on bytes (8 bits) between 0 (B0) and 255 (B11111111). If it's convenient to input an int (16 bits) in binary form you can do it a two-step procedure such as this:

`myInt = (B11001100 * 256) + B10101010; // B11001100 is the high byte`

Octal is base eight. Only characters 0 through 7 are valid.

`Example: 0101 == 65 decimal ((1 * 8^2) + (0 * 8^1) + 1)`

#### Warning

You can generate a hard-to-find bug by (unintentionally) including a leading zero before a constant and having the compiler unintentionally interpret your constant as octal

Hexadecimal (or hex) is base sixteen. Valid characters are 0 through 9 and letters A through F; `A` has the value 10, `B` is 11, up to `F`, which is 15.

Example: `0x101 == 257 decimal ((1 * 16^2) + (0 * 16^1) + 1)`

#### U & L formatters

By default, an integer constant is treated as an int with the attendant limitations in values. To specify an integer constant with another data type, follow it with:

- a 'u' or 'U' to force the constant into an unsigned data format. Example: 33u
- a 'l' or 'L' to force the constant into a long data format. Example: 100000L
- a 'ul' or 'UL' to force the constant into an unsigned long constant. Example: 32767ul

#### See also

- constants
- #define
- byte
- int
- unsigned int
- long
- unsigned long

Reference Home

Corrections, suggestions, and new documentation should be posted to the Forum.

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.

Edit Page | Page History | Printable View | All Recent Site Changes