ECMA-334: 11.1.5 Integral types
Microsoft .NET Framework, ASP.NET, Visual C# (CSharp, C Sharp, C-Sharp) Developer Training, Visual Studio
| C# Language Specification |
| © 2006 ECMA International |
11.1.5 Integral types
C# supports nine integral types: sbyte, byte, short, ushort, int, uint, long, ulong, and char. The
integral types have the following sizes and ranges of values:
- The
sbytetype represents signed 8-bit integers with values from –128 to 127, inclusive.
- The
bytetype represents unsigned 8-bit integers with values from 0 to 255, inclusive.
- The
shorttype represents signed 16-bit integers with values from –32768 to 32767, inclusive.
- The
ushorttype represents unsigned 16-bit integers with values from 0 to 65535, inclusive.
- The
inttype represents signed 32-bit integers with values from –2147483648 to 2147483647, inclusive.
- The
uinttype represents unsigned 32-bit integers with values from 0 to 4294967295, inclusive.
- The
longtype represents signed 64-bit integers with values from –9223372036854775808 to 9223372036854775807, inclusive.
- The
ulongtype represents unsigned 64-bit integers with values from 0 to 18446744073709551615, inclusive.
- The
chartype represents unsigned 16-bit integers with values from 0 to 65535, inclusive. The set of possible values for the char type corresponds to the Unicode character set. [Note: Althoughcharhas the same representation asushort, not all operations permitted on one type are permitted on the other. end note]
The integral-type unary and binary operators always operate with signed 32-bit precision, unsigned 32-bit precision, signed 64-bit precision, or unsigned 64-bit precision, as detailed in clause §14.
The char type is classified as an integral type, but it differs from the other integral types in two ways:
- There are no implicit conversions from other types to the char type. In particular, even though the
sbyte,byte, andushorttypes have ranges of values that are fully representable using thechartype, implicit conversions fromsbyte,byte, orushorttochardo not exist.
- Constants of the
chartype shall be written as character-literals or as integer-literals in combination with a cast to typechar. [Example:(char)10is the same as '\x000A'. end example]
The checked and unchecked operators and statements are used to control overflow checking for integral-type
arithmetic operations and conversions (§14.5.12). In a checked context, an overflow produces a
compile-time error or causes a System.OverflowException to be thrown. In an unchecked context,
overflows are ignored and any high-order bits that do not fit in the destination type are discarded.