上次腾讯面试,问我int和long分别几个字节,结果被鄙视了。 
事过N天,鼓起勇气来好好查了一下,发现学问还是蛮大的。 
int类型比较特殊,具体的字节数同机器字长和编译器有关。如果要保证移植性,尽量用__int16 __int32 __int64吧,或者自己typedef int INT32一下。 
C、C++标准中只规定了某种类型的最小字节数(防止溢出) 
64位指的是cpu通用寄存器的数据宽度是64位的。找到一个图 
| 数据类型名称 | 
字节数 | 
别名 | 
取值范围 | 
 
| int | 
* | 
signed,signed int | 
由操作系统决定,即与操作系统的"字长"有关 | 
 
| unsigned int | 
* | 
unsigned | 
由操作系统决定,即与操作系统的"字长"有关 | 
 
| __int8 | 
1 | 
char,signed char | 
–128 到 127 | 
 
| __int16 | 
2 | 
short,short int,signed short int | 
–32,768 到 32,767 | 
 
| __int32 | 
4 | 
signed,signed int | 
–2,147,483,648 到 2,147,483,647 | 
 
| __int64 | 
8 | 
无 | 
–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 
 
| bool | 
1 | 
无 | 
false 或 true | 
 
| char | 
1 | 
signed char | 
–128 到 127 | 
 
| unsigned char | 
1 | 
无 | 
0 到 255 | 
 
| short | 
2 | 
short int,signed short int | 
–32,768 到 32,767 | 
 
| unsigned short | 
2 | 
unsigned short int | 
0 到 65,535 | 
 
| long | 
4 | 
long int,signed long int | 
–2,147,483,648 到 2,147,483,647 | 
 
| long long | 
8 | 
none (but equivalent to __int64) | 
–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 
 
| unsigned long | 
4 | 
unsigned long int | 
0 到 4,294,967,295 | 
 
| enum | 
* | 
无 | 
由操作系统决定,即与操作系统的"字长"有关 | 
 
| float | 
4 | 
无 | 
3.4E +/- 38 (7 digits) | 
 
| double | 
8 | 
无 | 
1.7E +/- 308 (15 digits) | 
 
| long double | 
8 | 
无 | 
1.7E +/- 308 (15 digits) | 
 
| wchar_t | 
2 | 
__wchar_t | 
0 到 65,535 | 
 
 
| 类型标识符 | 
类型说明 | 
长度 (字节) | 
范围 | 
备注 | 
 
| char | 
字符型 | 
1 | 
-128 ~ 127 | 
-27 ~ (27 -1) | 
 
| unsigned char | 
无符字符型 | 
1 | 
0 ~ 255 | 
0 ~ (28 -1) | 
 
| short int | 
短整型 | 
2 | 
-32768 ~ 32767 | 
2-15 ~ (215 - 1) | 
 
| unsigned short int | 
无符短整型 | 
2 | 
0 ~ 65535 | 
0 ~ (216 - 1) | 
 
| int | 
整型 | 
4 | 
-2147483648 ~ 2147483647 | 
-231 ~ (231 - 1) | 
 
| unsigned int | 
无符整型 | 
4 | 
0 ~ 4294967295 | 
0 ~ (232-1) | 
 
| float | 
实型(单精度) | 
4 | 
1.18*10-38 ~ 3.40*1038 | 
7位有效位 | 
 
| double | 
实型(双精度) | 
8 | 
2.23*10-308 ~ 1.79*10308 | 
15位有效位 | 
 
| long double | 
实型(长双精度) | 
10 | 
3.37*10-4932 ~ 1.18*104932 | 
19位有效位 | 
 
 
 
 |