关于short int long的长度规定

标准也规定了这些整数类型的最小取值范围。


short 的最小表示范围和 int 一样,都是-32767 到 32767 。也就是 -(2^15 - 1)到(2^15 - 1)。其中,2^15表示 2 的 15 次方。类似地,2 的 20 次方记作2^20 ,以此类推。注意:C 语言中 2^15 并不表示 2 的 15 次方,为了书写方便,我们姑且这么表示。

long 的最小取值范围是 -2147483647 到 2147483647 。也就是 -(2^31 - 1) 到 (2^31 - 1) 。unsigned short的最小表示范围和unsigned int 一样,都是 0 到 65535(2^16 - 1)。unsigned long 的最小取值范围是 0 到 4294967295(2^32 - 1)。

long long的最小取值范围是 -9223372036854775807(-(2^63 - 1))到 9223372036854775807(2^63 - 1);unsigned long long 是 0 到 18446744073709551615(2^64 - 1)。


标准规定,int 的表示范围不能小于 short 的表示范围,long 的表示范围不能小于 int 的表示范围。这就是说 short 型变量占用的空间可能比 int 型变量少,而 long 型变量占用的空间可能比 int 型变量多。

16 位(bit)的计算机中,int 和 short 一般都是 16 位,而 long 是 32位;32位的计算机中,short一般是 16 位,而long和int是 32位。TC2(16位的编译器)中,int是16位的;而 Dev-C++(32 位的编译器)中,int 是 32 位的。


目前,long long 一般 64 位,long 是 32 位,short 是 16 位,而 int 或者 16 位,或者 32 位。具体某个编译器到底使用多少位来表示这些类型,我们可以用运算符 sizeof 来获取。例如:
          printf( "%lu\n", (unsigned long)sizeof(int) * 8 );  /* 输出 int 的位数 */
          printf( "%zu\n", sizeof(short) * 8 );  /* 输出 short 的位数 */
    sizeof 运算符返回其操作数占用空间的大小,以字节(Byte)为单位。注意,C 定义字节的大小为 char 类型的大小。char 通常是 8 位(bit)的,当然也可以更大。这里我们假设 char 是 8 位的。点击查看 char 类型详细介绍
    sizeof 的用法我们以后会讲到,现在只要有个印象就好了。第二句中的 %zu 是 C99 特有的,如果您的编译器不支持 C99(准确地说,应该是如果您的编译器使用的库函数不支持 C99),运行结果将会出错。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在计算机编程语言中,shortintlong是表示整数类型的关键字。它们的区别在于它们所能表示的范围大小不同。 shortshort int的缩写,表示短整型。一般情况下,short占用2个字节(16位),它的取值范围较小,大约是-32,768到32,767。 int是整型的缩写,表示整数类型。在不同的编译器中,int的大小可以是2个字节(16位)或4个字节(32位),这取决于编译器和操作系统的要求。它的取值范围较大,大约是-2,147,483,648到2,147,483,647。 long表示长整型。在不同的编译器中,long的大小可以是4个字节(32位)或8个字节(64位)。它的取值范围比int更大,大约是-9,223,372,036,854,775,808到9,223,372,036,854,775,807。 需要注意的是,在编程过程中,long类型的值需要在数字后面加上"L",以区分它们和int类型的值。例如,long num = 100000000L。 需要了解的是,并没有规定long一定要比int长,也没有规定short要比int短。根据标准规定,长整型至少和整型一样长,整型至少和短整型一样长。具体的实现方式和长度由编译器厂商决定。因此,具体的shortintlong的大小取决于所使用的编译器和操作系统。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [关于intshort intlong intlong long 的区别](https://blog.csdn.net/u012223913/article/details/51181761)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [关于 shortint ,long,和float,double 理解](https://blog.csdn.net/chujingh975868/article/details/100972058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值