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.
In this article
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.