上一节中我们讨论了循环结构。这一节中,我们继续学习两个新的关键词break和continue,用于编写更加为复杂的循环流程。
1. 有限循环的3个要素
#include <stdio.h>
int main()
{
int i = 0;
while(1)
{
printf("%d ", i);
i++;
}
printf("\ni=%d ", i);
return 0;
}
上面这段代码将陷入死循环,无限次数地打印i
的值。除非你按下组合键Ctrl + C
结束程序。
让我们想办法把这段代码变为有限次数的循环,仅循环10次。
在上一节中我们探讨了有限次数循环程序的3个要素。
- 开始时,为计数器设置初始值。
- 计数器与一个有限值比较作为循环条件。
- 更新计数器。
这段程序满足了1、3两个要素,但是循环条件始终为真,无法结束循环。我们只要将while中的循环条件改为i < 10
,这样计数器i将只能从0自增到9,完成10次循环。
2. 使用break打破循环
要达到上述效果,我们可以修改while中的循环条件。但是,现在有了一个新选择。
可以将循环条件放置于while括号以外的地方,并配合上break
关键词,也能达到同样的效果。
#include <stdio.h>
int main()
{
int i = 0;
while(1)
{
if (i == 10)
{
break;
}
printf("%d ", i);
i++;
}
printf("\ni=%d ", i);
return 0;
}
这下代码仅打印了出了0到9就退出循环了。while的循环条件依然始终为真,因此没法指望从while处跳出循环。但是,我们把实际的循环条件放置到了if
语句中。计数器i
在0到9时,无法进入if
内部。而一旦i
为10,进入if
内部,执行了break
语句,立即跳出了while循环。
break执行后,程序立刻从break处跳至循环结束。break语句后的循环行为将均不执行。
让我们把if和break放到printf的后面。
#include <stdio.h>
int main()
{
int i = 0;
while(1)
{
printf("%d ", i);
if (i == 10)
{
break;
}
i++;
}
printf("\ni=%d ", i);
return 0;
}
这一次比上面多打印了数字10。i为10时,printf函数将先执行。而后遇到if语句,条件满足进入if语句。break被执行,这才跳出循环。
最后我们把if和break放到循环的最后。
#include <stdio.h>
int main()
{
int i = 0;
while(1)
{
printf("%d ", i);
i++;
if (i == 10)
{
break;
}
}
printf("\ni=%d ", i);
return 0;
}
这一次的结果和第一次结果一致,输出了0到9。 当i的值为9被打印后,紧接着i自增为10,最后进入if执行break,跳出了循环。