重复执行语句,直到表达式的值变为零。测试发生在每次迭代之前。
句法
while(表达式)语句
表达-标量类型的任何表达式。该表达式在每次迭代之前进行评估,如果它比较等于零,则退出循环。声明-任何语句,通常是复合语句,作为循环的主体
说明
甲while语句导致语句(也称为循环体)时要执行多次,直到表达(也称为控制表达)进行比较等于零。无论循环体是正常输入还是跳转到语句中间,都会发生重复。
表达式的评估发生在每次执行语句之前(除非由goto输入)。如果需要在循环体之后评估控制表达式,则可以使用do-while循环。
如果循环的执行需要在某个时候终止,break语句可以用作终止语句。
如果需要在循环体的末尾继续执行循环,则可以使用continue语句作为快捷方式。
如果循环在其语句或表达式的任何部分中没有可观察的行为(I / O,易失性访问,原子操作或同步操作),则具有无限循环的程序具有未定义的行为。这允许编译器优化所有不可观察的循环,而不会证明它们终止。唯一的例外是表达式是常量表达式的循环; while(true)总是一个无止境的循环。
与所有其他选择和迭代语句一样,while语句可以建立块范围:表达式中引入的任何标识符在语句后超出范围。(自C99以来)
笔记
布尔和指针表达式经常用作循环控制表达式。false任何指针类型的布尔值和空指针值都等于零。
关键词
while.
例
#include #include #include enum { SIZE = 8 };int main(void){ // trivial example
int array[SIZE], n = 0; while(n
n = 0; while(n
// classic strcpy() implementation // (copies a null-terminated string from src to dst)
char src[]="Hello, world", dst[sizeof src], *p=dst, *q=src; while(*p++ = *q++) ; // null statement puts(dst);}
输出:
Array filled!1 0 1 1 1 1 0 0 Hello, world
参考
C11标准(ISO / IEC 9899:2011):6.8.5.1 while语句(p:151)
C99标准(ISO / IEC 9899:1999):6.8.5.1 while语句(p:136)
C89 / C90标准(ISO / IEC 9899:1990):3.6.5.1 while语句