Data Type Ranges
For 32-bit and 64-bit compilers, Microsoft Visual C++ recognizes the types shown in the table below. Note that the following type also have unsigned forms:
int (unsigned int)
__int8 (unsigned __int8)
__int16 (unsigned __in16)
__int32 (unsigned __in32)
__int64 (unsigned __in64)
char (unsigned char)
short (unsigned short)
long (unsigned long)
long long (unsigned long long)
Type Name | Bytes | Other Names | Range of Values |
---|---|---|---|
int |
4 |
signed |
–2,147,483,648 to 2,147,483,647 |
__int8 |
1 |
char, signed char |
–128 to 127 |
__int16 |
2 |
short, short int, signed short int |
–32,768 to 32,767 |
__int32 |
4 |
signed, signed int, int |
–2,147,483,648 to 2,147,483,647 |
__int64 |
8 |
long long, signed long long |
–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
bool |
1 |
none |
false or true |
char |
1 |
none |
–128 to 127 |
short |
2 |
short int, signed short int |
–32,768 to 32,767 |
long |
4 |
long int, signed long int |
–2,147,483,648 to 2,147,483,647 |
long long |
8 |
none (but equivalent to __int64) |
–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
enum |
4 |
none |
Same as int |
float |
4 |
none |
3.4E +/- 38 (7 digits) |
double |
8 |
none |
1.7E +/- 308 (15 digits) |
long double |
same as double |
none |
same as double |
wchar_t |
2 |
__wchar_t |
0 to 65,535 |
A variable of __wchar_t designates a wide-character or multibyte character type. By default wchar_t is a typedef for unsigned short. Use the L prefix before a character or string constant to designate the wide-character-type constant. When compiling with /Zc:wchar_t or /Za, the compiler can distinguish between an unsigned short and wchar_t for function overload purposes.
Signed and unsigned are modifiers that can be used with any integral type except bool. The char type is signed by default, but you can specify /J (compiler option) to make it unsigned by default.
The int and unsigned int types have the size of the system word: four bytes. However, portable code should not depend on the size of int.
Microsoft C/C++ also features support for sized integer types. See __int8, __int16, __int32, __int64 for more information. Also see Integer Limits.
See Fundamental Types for more information on the restrictions of the sizes of each type.