Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The Microsoft C++ 32-bit and 64-bit compilers recognize the types in the table later in this article.
- int (unsigned int) - __int8 (unsigned __int8) - __int16 (unsigned __int16) - __int32 (unsigned __int32) - __int64 (unsigned __int64) - short (unsigned short) - long (unsigned long) - long long (unsigned long long)
If its name begins with two underscores (__
), the data type is nonstandard.
The ranges specified in the following table are inclusive-inclusive.
Type Name | Bytes | Other Names | Range of Values |
---|---|---|---|
int | 4 | signed | -2,147,483,648 to 2,147,483,647 |
unsigned int | 4 | unsigned | 0 to 4,294,967,295 |
__int8 | 1 | char | -128 to 127 |
unsigned __int8 | 1 | unsigned char | 0 to 255 |
__int16 | 2 | short , short int , signed short int | -32,768 to 32,767 |
unsigned __int16 | 2 | unsigned short , unsigned short int | 0 to 65,535 |
__int32 | 4 | signed , signed int , int | -2,147,483,648 to 2,147,483,647 |
unsigned __int32 | 4 | unsigned , unsigned int | 0 to 4,294,967,295 |
__int64 | 8 | long long , signed long long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
unsigned __int64 | 8 | unsigned long long | 0 to 18,446,744,073,709,551,615 |
bool | 1 | none | false or true |
char | 1 | none | -128 to 127 by default 0 to 255 when compiled by using /J |
signed char | 1 | none | -128 to 127 |
unsigned char | 1 | none | 0 to 255 |
short | 2 | short int , signed short int | -32,768 to 32,767 |
unsigned short | 2 | unsigned short int | 0 to 65,535 |
long | 4 | long int , signed long int | -2,147,483,648 to 2,147,483,647 |
unsigned long | 4 | unsigned long int | 0 to 4,294,967,295 |
long long | 8 | none (but equivalent to __int64 ) | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
unsigned long long | 8 | none (but equivalent to unsigned __int64 ) | 0 to 18,446,744,073,709,551,615 |
enum | varies | none | |
float | 4 | none | 3.4E +/- 38 (seven digits) |
double | 8 | none | 1.7E +/- 308 (fifteen 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 either a wide-character type or multibyte-character type. Use the L
prefix before a character or string constant to designate the wide-character-type constant.
signed
and unsigned
are modifiers that you can use with any integral type except bool
. Note that char
, signed char
, and unsigned char
are three distinct types for the purposes of mechanisms like overloading and templates.
The int
and unsigned int
types have a size of 4 bytes. However, portable code shouldn't depend on the size of int
because the language standard allows this to be implementation-specific.
C/C++ in Visual Studio also supports sized integer types. For more information, see __int8, __int16, __int32, __int64
and Integer Limits.
For more information about the restrictions of the sizes of each type, see Built-in types.
The range of enumerated types varies depending on the language context and specified compiler flags. For more information, see C Enumeration Declarations and Enumerations.