Data Type Ranges


For the latest documentation on Visual Studio 2017 RC, see Visual Studio 2017 RC Documentation.

Visual 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 (__), a data type is non-standard.

The ranges that are specified in the following table are inclusive-inclusive.

Type NameBytesOther NamesRange of Values
int4signed–2,147,483,648 to 2,147,483,647
unsigned int4unsigned0 to 4,294,967,295
__int81char–128 to 127
unsigned __int81unsigned char0 to 255
__int162short, short int, signed short int–32,768 to 32,767
unsigned __int162unsigned short, unsigned short int0 to 65,535
__int324signed, signed int, int–2,147,483,648 to 2,147,483,647
unsigned __int324unsigned, unsigned int0 to 4,294,967,295
__int648long long, signed long long–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
unsigned __int648unsigned long long0 to 18,446,744,073,709,551,615
bool1nonefalse or true
char1none–128 to 127 by default

0 to 255 when compiled by using /J
signed char1none–128 to 127
unsigned char1none0 to 255
short2short int, signed short int–32,768 to 32,767
unsigned short2unsigned short int0 to 65,535
long4long int, signed long int–2,147,483,648 to 2,147,483,647
unsigned long4unsigned long int0 to 4,294,967,295
long long8none (but equivalent to __int64)–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
unsigned long long8none (but equivalent to unsigned __int64)0 to 18,446,744,073,709,551,615
enumvariesnoneSee Remarks later in this article
float4none3.4E +/- 38 (7 digits)
double8none1.7E +/- 308 (15 digits)
long doublesame as doublenoneSame as double
wchar_t2__wchar_t0 to 65,535

Depending on how it's used, 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 four bytes. However, portable code should not 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 Fundamental 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.

Fundamental Types