C语言数据溢出
答案:3 悬赏:50 手机版
解决时间 2021-03-12 08:23
- 提问者网友:临风不自傲
- 2021-03-11 14:32
C语言如果int型数据占2个字节,定义a=32767,输出b=a+1,则显示器上 显示-32768是怎么算出来的,请具体写出二进制形式的计算方法,谢谢哈!(本人初学者,越具体越好)
最佳答案
- 五星知识达人网友:酒醒三更
- 2021-03-11 15:34
有符号int型数据的取值范围是-32768~32767,2个字节总共16位,第一位为符号位,正数的话第一位为0,负数则为1,整数的取值最大是第一位为0,其后的十五位全为1,算过来也就是32767,如果如题所说,加上1之后,第一位变为1,其余十五位全为0,转换一下,其十进制数据就是2的15此方,因为第一位为1,为负数,所以结果为-的2的15此方,也就是-32768~~~
全部回答
- 1楼网友:七十二街
- 2021-03-11 17:13
这个取决于编译器的 如果是turbo c 答案是-32768 因为16位整数的范围是-32768~32767
如果是gcc或者vc之类的话那就是65536 因为32位的整数范围比这大很多
按照你题目说是溢出 答案是-32768
- 2楼网友:零点过十分
- 2021-03-11 16:38
变量以补码形式存在内存中,对于两个字节的int,总共有16位存储。
范围:-32768到32767,对应的补码表示为1000 0000 0000 0000到0int型数据占2个字节,一个字节是8位,它的范围就是-32768-32767,所以当a=32767时,再加1它就溢出,返回到-32768了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯