c语言中int的范围是负32767到正32767,为什么把67523赋值给int类型照样可以输出?

 我来答
35145921
2016-08-12 · TA获得超过354个赞
知道小有建树答主
回答量:291
采纳率:0%
帮助的人:257万
展开全部
这是一种过时的说法了,只有在比较古老的书上才可以看到。

对于有符号整型,也就是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次幂。
mlper_
2016-08-12 · TA获得超过8017个赞
知道大有可为答主
回答量:4863
采纳率:78%
帮助的人:1244万
展开全部
C语言中的整型变量int的范围与计算机的字长有关,书本上给出的int型变量范围只是字长为16位的微机的情况,实际上int变量的长度是当前计算机的字长,例如在win32平台上,你用VC编译时,int型变量的范围为 -2^31 ~ 2^31 - 1,也就是:[ -2147483648, 2147483647],这时赋值如果超出这个范围的话,那么结果就会出错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卖萝莉的店长
2016-08-12 · 超过12用户采纳过TA的回答
知道答主
回答量:19
采纳率:0%
帮助的人:22.3万
展开全部
那个是VB之类的范围啊,大哥,c是2^32-1, 就算是负的,那也应该是-32768才对啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友39bfc54
2016-08-12 · 超过18用户采纳过TA的回答
知道答主
回答量:97
采纳率:100%
帮助的人:29万
展开全部
现在int一般占4个字节,32位!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友53f786f
2016-08-12 · TA获得超过119个赞
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:78.1万
展开全部
int型数据所占字节数跟编译器有关,要具体看范围是多少。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式