关于64位和32位编译环境下不同数据类型长度有以下几条规则:
(1)char类型一般是8bit,但ANSI C里没有硬性规定其长度,某些嵌入式编译器可能是16bit
(2)short和long类型的长度不相同
(3)int类型通常同具体机器的物理字长相同
(4)short通常是16bits, int通常是16bits or 32bits每种编译器可以根据硬件的不同自由确定, 但是short和int必须最少是16bits, 而long类型必须最少是32bits, 并且short必须比int和long类型要短。
类型 | 64位 | 32位 | 16位 |
Char | 1 | 1 | 1 |
Short | 2 | 2 | 2 |
Int | 4 | 4 | 2 |
Long | 8 | 4 | 4 |
Float | 4 | 4 | 4 |
Long long | 8 | 8 |
|
Double | 8 | 8 |
|
Long double | 16 | 12 |
|
Char *(指针) | 8 | 4 | 4 |