C语言变量溢出?

溢出的后果是什么?如使用一个无符号的字符型变量,对它进行自减,减到零了再继续减下去,它的结果会是怎样?然后自增到了超出了最大值的结果有如何?求分析。... 溢出的后果是什么?如使用一个无符号的字符型变量,对它进行自减,减到零了再继续减下去,它的结果会是怎样?然后自增到了超出了最大值的结果有如何?求分析。 展开
 我来答
大叔IQ高
2011-08-01 · TA获得超过547个赞
知道小有建树答主
回答量:300
采纳率:0%
帮助的人:310万
展开全部
首先应该明白什么是内存溢出,简单的例子就是你定义一个char类型数据
char类型是1个字节,即8位00000000,无符号数的最大值为11111111,这时如果对他再加上1,11111111+00000001=1,00000000,超出了char类型数据范围,造成的结果是首先你的返回值不准确,同时进上去的1位占用了其他内存地址,如果此地址内有数据,就会被改写,引起不可预知的问题,也许什么影响也没用。
Jarrywd
2011-08-01 · TA获得超过100个赞
知道答主
回答量:81
采纳率:0%
帮助的人:76.6万
展开全部
溢出的后果很多,好像有设置还是跟配置有关的,比如自加,有可能是加到最大,就不会变了,也可能是加到最大值后再加一编程负最大(因为计算机里存储的数据第一位表示符号)或者是0了(无符号数),自减跟自加类似,减到一出可能出现最大值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
263753422
2011-08-01
知道答主
回答量:8
采纳率:0%
帮助的人:6.9万
展开全部
溢出的结果是出错,对于无符号而言上限达到了就从下限重新开始,因为当所内存中二进制代码都是1是再加1就重新置零了,反之自减也是一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ss1969
2011-08-01
知道答主
回答量:50
采纳率:0%
帮助的人:20.6万
展开全部
unsigned char a = 0;
a--;
printf("%x, %d, %u\n", a, a, a);

这三行程序就看出结果了
你提到的无符号其实无意义
关键是看你怎么去“理解”这个值
按hex理解,就是0xFF
按无符号,是255
按有符号,是-1
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xihuayihun
2011-08-01 · TA获得超过734个赞
知道小有建树答主
回答量:416
采纳率:0%
帮助的人:386万
展开全部
溢出的意思是超出了你定义的范围,不如你第一A为正整数,但写程序写循环自减它减到0以下就会告诉你溢出,所以你该增大定义范围或者加条件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式