- 循环语句
while循环
C语言中的while语句和其他语言中的while语句有许多相似之处,唯一存在差别的地方就是判断语句部分,和if语句类似。while语句实现循环时,要求循环的测试在循环体开始执行之前进行,所以如果测试的结果一开始就是假的,循环体就根本不会执行。同样,在循环体需要多条语句来完成任务时,可以使用代码块来实现。举例如下:
//使用while语句打印数字1-10
int main()
{
int i = 1;
while(i <= 10)
{
printf("%d ",i);
i = i + 1;
}
return 0;
}
while语句中还含有break语句和continue语句,接下来分别进行介绍:
while(i <= 10)
{
if(i == 5)
break;//continue;
printf("%d ",i);
i = i + 1;
}
//break语句输出结果1,2,3,4
//continue语句输出结果1,2,3,4,5死循环
通过上述输出结果,我们可以知道,在while循环中,break语句用于永久终止循环,在执行完break语句之后,执行流下一条执行的语句就是循环正常结束后应该执行的那条语句;continue语句用于永久终止当前的那次循环,在执行完continue语句之后,执行流接下来就是重新测试表达式的值,决定是否继续执行循环。
for循环
C语言for语句比其他语言的for语句更为常用。事实上,我们可以将for语句看做while循环的一种极为常用的语句组合形式的简写法。举例如下:
//使用for语句打印数字1-10
int main()
{
int i = 0;
for(i = 1; i <= 10; i++)
{
printf("%d ",i);
}
return 0;
}
for语句的语法为:
for(表达式1;表达式2;表达式3)
循环语句
//表达式1为初始化部分,用于初始化循环变量
//表达式2为条件判断部分,用于判断循环时候终止
//表达式3为调整部分,用于循环条件的调整
通过对比,我们发现在while循环中依然存在循环的三个必须条件,但是离的比较远,修改起来没用for语句集中和方便。for循环中同样可以使用break和continue语句,意义和在while循环中是一样的,但还是有些差异,在于continue语句。在for语句中,continue语句跳过循环体的剩余部分,直接回到调整部分;在while语句中,调整部分是循环体的一部分,所以continue将会把它也跳过。
do while()循环
C语言的do语句非常像其他语言的repeat语句。它很像while语句,只是它的测试在循环体执行之后才进去,而不是先于循环体执行。所以,这种循环的循环体至少执行一次,使用的场景有限,所以不经常使用。举例如下:
//使用do循环打印数字1-10
int main()
{
int i = 0;
do
{
printf("%d ",i);
}while(i < 10);
return 0;
}
do while()循环语句中同样可以使用break和continue语句。
- goto语句
C语言中提供了可以随意滥用的goto语句和标记跳转的标号。从理论上goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。但是某些场合下使用goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环,因为这种情况下使用break达不到目的,它只能从最内层循环退出到上一层的循环。举例如下:
while(condition1){
while(condition2){
while(condition3){
if(some disaster)
goto quit;
}
}
}
quit: ;
这个技巧能够实现退出所有循环的目的,但情况被弄得非常复杂。