for循环
语法
表达式1为初始化部分,用于初始化循环变量的。表达式2为条件判断部分,用于判断循环时终止。表达式3为调整部分,用于循环条件的调整。
例子:
int main()
{
int i = 0;
for (i = 1; i < 10; i++)
{
printf("%d", i);
}
return 0;
}
for循环执行流程
break和continue在for循环中
我们发现在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。但还是有些差异:
代码1:
int main()
{
int i = 0;
for (i = 0; i <= 10; i++)
{
if (i == 5)
break;
printf("%d\n", i);
}
return 0;
}
代码2:
int main()
{
int i = 0;
for (i = 0; i <= 10; i++)
{
if (i == 5)
continue;
printf("%d\n", i);
}
return 0;
}
由以上两段代码我们可以看出,在for循环中,break的用法和while循环一样,跳出了整个循环,而continue却不会变成死循环,因为代码在跳出后面部分后会继续前面的调整部分,所以代码二的输出结果是跳过5,输出01234678910.
for语句的循环控制变量
一些建议:
1.不可在for循环体内修改循环变量,防止for循环失去控制。
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d", i);
i = 5;
}
return 0;
}
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d", i);
int j = 0;
for (j = 0; j < 10; i++)
{
printf("hehe\n");
}
}
return 0;
}
2.建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
int main()
{
int arr[10] = { 0 };
int i = 0;//i<=9;
for (i = 0; i < 10 ; i++)
{
printf("%d", arr[i]);
}
return 0;
}
这一段代码的判断部分:i<10写成i<=9也可以,结果也不会变,但是写成i<10效果更好,理解程度和可读性都比较好。
注意:
代码1:
int main()
{
for (;;)//判断部分的省略,会使判断部分恒为真,从而使代码变成死循环
{
printf("hehe");
}
return 0;
}
代码2:
int main()
{
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("hehe\n");
}
}
return 0;
}
代码3:
int main()
{
int i = 0;
int j = 0;
for (; i < 3; i++)
{
for (; j < 3; j++)
{
printf("hehe\n");
}
}
return 0;
}
代码2情况下,会打印9个hehe(i循环一次,j会循环三次)
而在代码3情况下,只会打印3个hehe,因为i和j的for循环中,并没有初始化,当i循环第一次时,j循环三次,最终变成3,而当i循环第二次时,由于j没有初始化,还是原来的3,直接跳出循环不打印hehe,所以最终只会打印3个hehe
这就是胡乱省略给我们带来的不便,所以不要怕麻烦,能不省则不省。
代码4:
int main()
{
int x, y;
for (x = 0, y = 0; x < 2 && y < 5; x++, y++)
{
printf("hehe\n");
}
return 0;
}
可以用两个变量控制循环
一道笔试题
//请问要循环多少次?
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)
k++;
return 0;
}
答案是0次,因为判断部分k=0是赋值而不是判断,0为假,不进入循环。