C语言规定short占用的存储空间不能多于int,long占用的存储空间不能少于int。这样做是为了适应不同的机器。
因为现在的计算机普遍采用64位处理器。为了存储64位的整数引入了long long类型。
c语言只规定了最小的取值范围(以下为最小的大小)
32位机:
short[-,]=[-32768,32767] 16位
int [,]=[-32768,32767] 16位
long [-,]=[-2147483648,2147483647] 32位 20亿10位数
(long的引入就是为了存储32位的整数)
64位机
short 16位(%hd)
int 16位(%d)
long 32位(%ld)
long long 64位(%lld) [-,]= [-9223372036854775808,9223372036854775807] 19位
unsigned short (%hu) [0,-1]=[0,65535]
unsigned int (%u) [0,-1] = [0,4294967295]
unsigned long (%lu)[0,-1]= [0,4294967295]
unsigned long long (%llu)[0,-1]=[0,18446744073709551615]
在int和long占用空间一样大的系统,需要32位(超过±32767)的整数时应使用long。
原因:以便程序移植到其它电脑(int和long占用空间不同的系统)时还能正常运行
在int占用空间设置为32位的系统中,如果需要用到16位的整数应使用short
原因:节省空间,计算机某些组件使用的硬件寄存器时16位的。
博主的电脑:
short 16
int 32
long 32
long long 64
当使用[-32768,32767]的整数时,要用short
当使用[-2147483648,2147483647]的整数时,要用long(为了移植性)
当使用[-9223372036854775808,9223372036854775807]的整数时,要用long long
( 分别除去上一个区间里面的数)
问题:那int有什么用?