对于循环while(表达式)语句,当表达式的值为假时,就结束while循环。那么,能否有其他机制,可以结束while循环的执行呢?
在学习switch-case语法的时候,可以使用break关键字,跳出switch-case语法结构,结束switch-case语句的执行。那么,同样,在while循环中,也可以使用break关键字来结束while循环的执行。如下是一个程序测试例子:
程序运行的结果如下:
可以看到,我们执行while(1)循环,由于while表达式是1值,为真值,所以,会一直循环,我们可以称为:死循环。
那么,在循环体中,我们判断变量i的值,当大于等于5的时候,就执行break语句,此时,就跳出了while循环体,结束while循环。
所以,我们知道:break关键字,就是跳出whlie循环。注意,如果多层循环嵌套,break关键字只能够跳出它所在的哪一个循环。如下是一个程序测试例子:
程序运行的结果如下:
可以看到,在第二个while循环中,执行的 break;语句只是跳出第二个while循环,结束第二个while循环的运行。然后,再执行第一个while循环后面的break;语句,才跳出第一个while循环。
C语言还提供了continue关键字,只能够配合while、for循环语句使用。它使用的格式如下:
while(表达式)
语句1;
continue;
语句2;
当碰到continue关键字的时候,就越过continue关键字后面的语句,回到while(表达式)语句,继续判断表达式,进行循环操作。
例如上面的例子,在while循环中遇到continue关键字,就是越过continue关键字后面的语句2代码;然后,回到while(表达式)进行判断,继续循环。如下是一个程序测试例子:
程序运行的结果如下:
可以看到,执行i%2运算,对变量i除以2取余数,如果余数是0,就执行continue语句。此时,在while循环体中,执行了continue语句之后,就越过continue后面的代码,所以,就没有执行:
printf(8220;i = %dn”, i); //循环体
从输出结果可以看出,当变量i的值是奇数的时候,i除以2取余为1,不等于0,此时,不执行continue语句,才可以执行printf输出语句。所以,输出变量i的值都是奇数。