语法结构:
For(表达式1;表达式2;表达式3)
循环语句;
使用for语句打印1到10,的方法,如下代码所示:
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d", i);
}
return 0;
}
循环就是下面这三个框循环执行。
那么出现continue和break是如何执行的呢?
首先加入break:
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;
printf("%d", i);
}
return 0;
}
当i循环到5的时候i==5成真执行break直接跳出整个循环,所以代码运行结果为1234.
Break换成continue:
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;
printf("%d", i);
}
return 0;
}
回忆之前while语句中加入continue后陷入了死循环,但是for语句的代码运行结果如下
这是因为continue只会跳过本次循环后面的语句,printf被跳过了,然后去执行了i++,这个没有跳过。综上:
Break是跳过终止
Continue是跳过继续
注意:循环内部不要改变循环变量!!防止循环失去控制。
接下来看下面一个代码:
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*3等于9,所以会打印9个hehe。那么我们已经int i=0 int j=0了,是否可以在循环里去掉初始值?试一下:
int main()
{
int i = 0;
int j = 0;
for (; i <3; i++)
{
for(;j<3;j++)
printf("hehe\n");
}
return 0;
}
这个代码打印出来三个hehe:
原因是第一次i循环时,已经将j的值变成了3,第二次i循环进入循环内容j还是3没有重新给于0,所以会直接判断失败退出循环,所以只能打印3*1个hehe。