整形占用空间大小问题

C语言规定short占用的存储空间不能多于int,long占用的存储空间不能少于int。这样做是为了适应不同的机器。

因为现在的计算机普遍采用64位处理器。为了存储64位的整数引入了long long类型。

c语言只规定了最小的取值范围(以下为最小的大小)

32位机:

          short[-2^{15 },2^{15}]=[-32768,32767]  16位

          int     [2^{15 },2^{15}]=[-32768,32767]   16位

          long [-2^{31},2^{31}]=[-2147483648,2147483647] 32位      20亿10位数

        (long的引入就是为了存储32位的整数)

64位机

         short 16位(%hd)

         int      16位(%d)

         long   32位(%ld)

         long long  64位(%lld)     [-2^{63},2^{63}]= [-9223372036854775808,9223372036854775807]   19位

         unsigned short (%hu) [0,2^{16}-1]=[0,65535]

         unsigned int (%u) [0,2^{32}-1] = [0,4294967295]

         unsigned long (%lu)[0,2^{32}-1]= [0,4294967295]

         unsigned long long (%llu)[0,2^{64}-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有什么用?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值