for循环的变种
省略所有条件
int main(){
for (; ; ) {
printf("hehe");
}
return 0;
}
结果:死循环
省略初始化
对比下面两段代码,判断分别会打印多少次hehe
//代码一
int main(){
int i = 0;
int j = 0;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("hehe");
}
}
return 0;
}
//代码二
int main(){
int i = 0;
int j = 0;
for ( ; i < 3; i++) {
for ( ; j < 3; j++) {
printf("hehe");
}
}
return 0;
}
代码二在 i = 0 的循环中, j 循环结束成为 3 。在进入 i = 1的循环中, j 没有被初始化为 0,仍是上次循环结束后的3,导致第二个for循环无法进行,最终只打印三次 hehe
结论:双重 for 循环中要注意变量初始化
使用多于一个变量控制循环
int main(){
int i = 0;
int j = 0;
for (i = 0, j = 0; i < 2 && j < 5; ++i, j++) {
printf("hehe");
}
return 0;
}
循环进行两次
第一次结束时 i = 1 ,j = 1;
第二次结束时 i = 2 , j = 2;
进入第三次时判断为假,不再进行循环
一道面试题
//判断要循环几次
#include <stdio.h>
int main()
{
int i = 0;
int k = 0;
for(i =0,k=0; k=0; i++,k++)
k++;
return 0;
}
首先要明确一个知识:0 就是假,非0就是真
判断条件是吧 0 赋给 k (赋值运算),所以表达式的结果为0,判断为假,所以循环一次都不进行