C语言?当int数字超过32767后它会显示什么数字?还有tc2.0和C++6.0有哪些区别呢?

谁能指点下,多谢啦!... 谁能指点下,多谢啦! 展开
 我来答
百度网友8ccbcc0
2011-07-23 · 超过13用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:36.5万
展开全部
TC里int占2个字节(16位),大小范围:-2^16 ~ 2^16-1(即:-32768~32767)
而VC++里int占4个字节(32位),档雹罩大小范围:-2^32 ~ 2^32-1(即:-4 294 967 296 ~4 294 967 295)
因此在输入数字超出范围是发生会溢出。
如果输入32769,在TC中发生溢出显示-32767(注意:溢出后输出的数不是随机的,那是根据二进制存储方式算出的),而在VC++中没有溢出就显示32769
具体计算方法:肆兆
十进制数32769的二进制表示为 "1000 0000 0000 0001 "
因为第一位是符号位(最左边的一位,1代表负数,0代表正数),且符号位不变,所以取其反码
得到: " 1111 1111 1111 1110 ", 再加上 1 ,得到: "1111 1111 1111 1111 "(第一位是符号位,代表是负数)
最后得到的此二进制数即为 "1000 0000 0000 0001 " 这个的补码
所以此补码对应的十进制数为 -32767
依照这种算补码的方式,可以此类推:
若是32767,则输出是 32767
若是32768,则输出是 -32768
若是32769,则输行闹出是 -32767
若是32770,则输出是 -32766
等等
walterclozet
2011-07-18 · TA获得超过277个赞
知道小有建树答主
回答量:317
采纳率:0%
帮助的人:192万
展开全部
TC2.0中超过以后如果用%d显示, 会是一答旦个清知扰负数. 如果是%x还是它本身的数字.
VC6里正常, int的范围猛磨和long是一样的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0ef7dc18c
2011-07-21 · TA获得超过120个赞
知道答主
回答量:103
采纳率:0%
帮助的人:0
展开全部
有区轮仿别的,tc的int型是岁轮2个乎桐信字节,所以32767+1 = -32768,而vc的int是4个字节的,不会越界,所以32767+1 = 32768!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
h714960997
2011-07-18 · TA获得超过113个赞
知道小有建树答主
回答量:240
采纳率:0%
帮助的人:149万
展开全部
后面的数字就不可信啦 是电脑随机的 后者直接显示的是0 不管你怎样运算都是0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式