for循环的执行规则:先进行k=1的赋值,再进行判定k==0,不等于0输出,继续k++,当k的值超过k的基本数据类型的最大范围,如果是char(-128~127),则当加到127时,再加1就会溢出,超出char所能表示的范围于是瞬间变成-128,然后继续k++直到为0则此时k判定为条件假跳出for循环。具体情形如下所示:
#include<stdio.h>
int main(){
char k;
for (k=1; k; k++)
printf ("%d\t ", k);
return 0;
}
对于char、short、int这样的有符号数,当溢出后会成为负数。
若前加上unsigned则为无符号数当溢出后会直接跳出for循环。
#include<stdio.h>
int main(){
unsigned char k;
for (k=1; k; k++)
printf ("%d\t ", k);
return 0;
}