//unsigned char 类型越界成为负数的计算
//请问该程序输出是多少?
#include <stdio.h>
int main()
{
unsigned char i = 7;
int j = 0;
for (; i > 0; i -= 3)
{
++j;
}
printf("%d\n", j); //173
return 0;
}
由于i-=3会将i置成负数,不过i为unsigned类型的,并没有负数,所有i会在0~255之间循环,所有当i为-2时,其真实值应该为254,当i为-1时,为255.因为循环条件为i>0,所有只有当i=0时才不满足条件,跳出循环。