C++中的整数类型
题目
int,long,long long在 32 位 ,64 位和 64 位下跑 32 位虚拟机的大小
一般来说在 32 位系统上:int 通常为 4 字节(32位),long 通常为 4 字节(32 位),long long 通常为 8 字节(64 位)
在 64 位系统上:int 通常位 4 字节(32 位),long 通常为 8 字节(64 位),long long通常为8 字节(64 位)
并且大小只和系统位数有关,所以在虚拟机下也就只和虚拟机的操作系统有关所以在64 位下跑 32 位虚拟机和 32 位系统是一致的。
解释
通常查询 C++20 ISO 14882 可以看到在 6.8.2 有关于基本类型的描述:
有五种标准signed integer type:
- signed char
- short int
- int
- long int
- Long long int
并且按这个list 的顺序每种类型都至少要有和前面的类型一样多的空间。
另外还有一些 impl 定义的扩展 signed integer type,与标准 signed integer type 统称为 signed integer type。$有符号整型所表示的值的范围是 -2的 N-1 次方到 2 的 N-1 次方-1。N 是类型的位宽。
对于每种 standard signed integer type,都有对应的 unsigned integer type,因此有:
- unsigned char
- unsigned short int
- unsigned int
- unsigned long int
- unsigned long long int
同样对于扩展的 signed integer type,也有 unsigned integer type,统称为 unsigned integer type。他们的取值范围是 0 到 2 的 N 次方-1。
signed integer type 的位宽不应该少于 Table 12 中指定值。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment