This documentation is archived and is not being maintained.

# 2.4.4.2 Integer literals

**Visual Studio .NET 2003**

Integer literals are used to write values of types `int`

, `uint`

, `long`

, and `ulong`

. Integer literals have two possible forms: decimal and hexadecimal.

*integer-literal:**decimal-integer-literal*

*hexadecimal-integer-literal**decimal-integer-literal:**decimal-digits integer-type-suffix*_{opt}*decimal-digits:**decimal-digit*

*decimal-digits decimal-digit**decimal-digit:*one of- 0 1 2 3 4 5 6 7 8 9
*integer-type-suffix:*one of- U u L l UL Ul uL ul LU Lu lU lu
*hexadecimal-integer-literal:*- 0x
*hex-digits integer-type-suffix*_{opt}

0X*hex-digits integer-type-suffix*_{opt} *hex-digits:**hex-digit*

*hex-digits hex-digit**hex-digit:*one of- 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f

The type of an integer literal is determined as follows:

- If the literal has no suffix, it has the first of these types in which its value can be represented:
`int`

,`uint`

,`long`

,`ulong`

. - If the literal is suffixed by
`U`

or`u`

, it has the first of these types in which its value can be represented:`uint`

,`ulong`

. - If the literal is suffixed by
`L`

or`l`

, it has the first of these types in which its value can be represented:`long`

,`ulong`

. - If the literal is suffixed by
`UL`

,`Ul`

,`uL`

,`ul`

,`LU`

,`Lu`

,`lU`

, or`lu`

, it is of type`ulong`

.

If the value represented by an integer literal is outside the range of the `ulong`

type, a compile-time error occurs.

As a matter of style, it is suggested that "`L`

" be used instead of "`l`

" when writing literals of type `long`

, since it is easy to confuse the letter "`l`

" with the digit "`1`

".

To permit the smallest possible `int`

and `long`

values to be written as decimal integer literals, the following two rules exist:

- When a
*decimal-integer-literal*with the value 2147483648 (2^{31}) and no*integer-type-suffix*appears as the token immediately following a unary minus operator token (Section 7.6.2), the result is a constant of type`int`

with the value −2147483648 (−2^{31}). In all other situations, such a*decimal-integer-literal*is of type`uint`

. - When a
*decimal-integer-literal*with the value 9223372036854775808 (2^{63}) and no*integer-type-suffix*or the*integer-type-suffix*`L`

or`l`

`long`

with the value −9223372036854775808 (−2^{63}). In all other situations, such a*decimal-integer-literal*is of type`ulong`

.

Show: