首页 > 解决方案 > C简单程序/你能解释一下结果吗?

问题描述

这是代码:

char number=4;
while(number<5) number=number-1;
printf("%d" , number);

结果=127,为什么?你能解释一下吗?谢谢

标签: c

解决方案


您的循环设置为迭代直到 number < 5。发生的情况是值递减到 5、4、3、2、1、0、-1 ... -128。当它尝试再减去一个值时,您会得到一个环绕到 char 可以容纳的最大值(8 位、127 或 0x7F)。此时,循环条件不再成立,因此您的循环退出。因此,环绕后的最终值为 127。


推荐阅读