由于C++标准中并未指定int、long、long long等具体的字节数(只规定int不少于16位,long不少于32位,long long不少于64位,并且sizeof(int) <= sizeof(long) <= sizeof(long long)),所以不同开发环境中的三者所占用位数可能不一致,具体的占用位数还得看实际的编译器实现。
一般来说:
-
32位系统下:int-32bit,long-32bit,long long-64bit,指针-32bit
-
Linux/Unix-64位:int-32bit,long-64bit,long long-64bit,指针-64bit
-
Windows-64位:int-32bit,long-32bit,long long-64bit,指针-64bit
数值表示范围
-
32位有符号:[-2147483648, 2147483647]
-
32位无符号:[0, 4294967295]
-
64位有符号:[-9223372036854775808, 9223372036854775807]
-
64位无符号:[0, 18446744073709551615]
注:也可以使用int8_t、int16_t、int32_t、int64_t来使用指定位数的整型。