变量在赋值之后如果越界了会怎样?
看到一个题目:
unsigned char i,j;
for(i=0,j=2;i!=j;i+=5,j+=7)
{
printf("i=%d , j=%d \n",i,j);
}
unsigned char范围是0-255,在此范围内一轮循环两个值i与j不可能相等,但是在后面可能会相同,但是比如 i=253,这时候i+5=258>255此时i到底是多少?
运行后知道:j=250 ,j=1;
j=253, j=4;
j=254, j=5;
i=254, i=3;
i=255, i=4;
一目了然了,注意255完了之后有个0.
稍作修改,把unsigned char 改为char,char范围:-128 ~ 127
运行结果:
j=121, j=-128;
j=-2, j=5;
j=124, j=-125;
j=-6, j=1;
i=125, i=-126;
i=-1, i=4;
i=124, i=-127;
i=-2, i=3;
嗯。因为位运算的结果,暂时先记这么多吧