C语言中 int、long、long long 的存储空间和值的范围

时间:2024-03-11 13:46:33

​ 在刚接触整型数据的存储空间和值的范围时,感觉这东西好无聊,应该没什么用吧!不过,现在,不得不承认,这东西真的很有用。在编写程序时,有些时候需要考虑数据规模,这个时候就能深切的体会到下面这个表格的用途了。例如,有些参加过程序设计竞赛的朋友应该知道,题目中是有测试数据规模要求的。

类型 字节数 取值范围
int 2 - 32768 ~ 32767 (5位十进制数)
int 4 - 2147483648 ~ 2147483647 (10位十进制数)
unsignde int 2 0 ~ 65535 (5位十进制数)
unsignde int 4 0 ~ 4294967295 (10位十进制数)
short 2 - 32768 ~ 32767 (5位十进制数)
unsigned short 2 0 ~ 65535 (5位十进制数)
long 4 - 2147483648 ~ 2147483647 (10位十进制数)
usigned long 4 0 ~ 4294967295 (10位十进制数)
long long 8 - 9223372036854775808 ~ 9223372036854775807(20位十进制数)
unsigned long long 8 0 ~ 18446744073709551615 (20位十进制数)

解释:

​ 1、编译系统给int型数据分配的内存可能是2个字节或是4个字节,具体由编译系统自行决定。例如:Turbo C 2.0分配的是2个字节,而Visual C++则分配4个字节。

​ 2、在编程考虑数据规模时,如果记不清楚具体数值范围,可根据十进制位数来决定使用什么类型。例如:当需要存储一个大小为100 000 000 0的数时,可以选择大于等于10位十进制数范围的类型,如long、long long 等。