C语言变量溢出?
溢出的后果是什么?如使用一个无符号的字符型变量,对它进行自减,减到零了再继续减下去,它的结果会是怎样?然后自增到了超出了最大值的结果有如何?求分析。...
溢出的后果是什么?如使用一个无符号的字符型变量,对它进行自减,减到零了再继续减下去,它的结果会是怎样?然后自增到了超出了最大值的结果有如何?求分析。
展开
7个回答
展开全部
溢出的后果很多,好像有设置还是跟配置有关的,比如自加,有可能是加到最大,就不会变了,也可能是加到最大值后再加一编程负最大(因为计算机里存储的数据第一位表示符号)或者是0了(无符号数),自减跟自加类似,减到一出可能出现最大值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
溢出的结果是出错,对于无符号而言上限达到了就从下限重新开始,因为当所内存中二进制代码都是1是再加1就重新置零了,反之自减也是一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
unsigned char a = 0;
a--;
printf("%x, %d, %u\n", a, a, a);
这三行程序就看出结果了
你提到的无符号其实无意义
关键是看你怎么去“理解”这个值
按hex理解,就是0xFF
按无符号,是255
按有符号,是-1
a--;
printf("%x, %d, %u\n", a, a, a);
这三行程序就看出结果了
你提到的无符号其实无意义
关键是看你怎么去“理解”这个值
按hex理解,就是0xFF
按无符号,是255
按有符号,是-1
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
溢出的意思是超出了你定义的范围,不如你第一A为正整数,但写程序写循环自减它减到0以下就会告诉你溢出,所以你该增大定义范围或者加条件。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询