变量在赋值之后如果越界了会怎样?

看到一个题目:

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;

嗯。因为位运算的结果,暂时先记这么多吧

                

 

posted @ 2013-10-25 10:15  wwjdwy  阅读(478)  评论(0编辑  收藏  举报