66问答网
所有问题
c语言中int的范围是负32767到正32767,为什么把67523赋值给int类型照样可以输出?
如题所述
举报该问题
推荐答案 2016-08-12
这是一种过时的说法了,只有在比较古老的书上才可以看到。
对于有符号整型,也就是int型,是和编译器的字长有关的,只有在16位编译器上,int类型占2个字节,其表示范围才是-32768~32767; 对于32位和64位编译器,int类型占4字节,表示范围为-2147483648~2147483647。
以16位编译器为例,介绍其原理,对于32位和64位类似。
int为有符号整型数,在16位编译器上占2字节16位。
对于有符号数,计算机中表达时,最高位约定为符号位,当符号位为0时为正数,符号位为1时为负数。
所以真正表达值的部分是剩余的15位,这15位的范围就是二进制的000 0000 0000 0000到111 1111 1111 1111。
转换成十进制也就是0~32767。
所以,正数的表示范围就是1~32767.
其中有一个特殊的值,就是0值,对于符号位1和0的时候,值都是0,用两个形式表示同一个数无疑是浪费的,符号位为1时的全0,就用来表达-32768了,这也是负数表示的范围比正数多1的原因。
综上,对于任意位的,无论是8位,16位,32位甚至64位的整数类型表示范围的计算公式为:
如总位数为n位,那么有符号数的范围为
-2^(n-1) ~ 2^(n-1)-1
无符号数的表示范围为:
0~2^n-1
在这个公式中,^表示乘方。2^n就是2的n次幂。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://66.wendadaohang.com/zd/ix2ps9pn9U9n9pvxxn.html
其他回答
第1个回答 2016-08-12
C语言中的整型变量int的范围与计算机的字长有关,书本上给出的int型变量范围只是字长为16位的微机的情况,实际上int变量的长度是当前计算机的字长,例如在win32平台上,你用VC编译时,int型变量的范围为 -2^31 ~ 2^31 - 1,也就是:[ -2147483648, 2147483647],这时赋值如果超出这个范围的话,那么结果就会出错
第2个回答 2016-08-12
那个是VB之类的范围啊,大哥,c是2^32-1, 就算是负的,那也应该是-32768才对啊
第3个回答 2016-08-12
现在int一般占4个字节,32位!
第4个回答 2016-08-12
int型数据所占字节数跟编译器有关,要具体看范围是多少。本回答被提问者采纳
1
2
下一页
相似回答
大家正在搜
c语言int类型的数据取值范围
c语言int超出范围溢出处理
c语言int型数据范围
c语言中char是什么意思
c语言 int范围
c语言的基本数据类型
c语言int型占几个字节
static c语言
c语言const
相关问题
C语言,int的范围是-32768~32767,但是程序为什...
c语言中int变量范围为什么是—32768至32767 就是...
为什么C语言中short int 范围是-32768---3...
int 的取值范围是-32768~32767 ,那为什么in...
为什么C语言中有符号整型变量的取值范围是-32768~327...
c语言 int的范围不是-32768~32767吗?为什么我...
为什么C语言中的整型取值范围是--32768~32767,是...
请问c语言中的int类型-32768〜3276...