?
Ce document utilise Manuel du site Web PHP chinois Libérer
重復(fù)執(zhí)行語(yǔ)句,直到表達(dá)式的值變?yōu)榱?。測(cè)試發(fā)生在每次迭代之前。
while(表達(dá)式)語(yǔ)句 |
---|
表達(dá) | - | 標(biāo)量類型的任何表達(dá)式。該表達(dá)式在每次迭代之前進(jìn)行評(píng)估,如果它比較等于零,則退出循環(huán)。 |
---|---|---|
聲明 | - | 任何語(yǔ)句,通常是復(fù)合語(yǔ)句,作為循環(huán)的主體 |
甲while
語(yǔ)句導(dǎo)致語(yǔ)句(也稱為循環(huán)體)時(shí)要執(zhí)行多次,直到表達(dá)(也稱為控制表達(dá))進(jìn)行比較等于零。無論循環(huán)體是正常輸入還是跳轉(zhuǎn)到語(yǔ)句中間,都會(huì)發(fā)生重復(fù)。
表達(dá)式的評(píng)估發(fā)生在每次執(zhí)行語(yǔ)句之前(除非由goto輸入)。如果需要在循環(huán)體之后評(píng)估控制表達(dá)式,則可以使用do-while循環(huán)。
如果循環(huán)的執(zhí)行需要在某個(gè)時(shí)候終止,break語(yǔ)句可以用作終止語(yǔ)句。
如果需要在循環(huán)體的末尾繼續(xù)執(zhí)行循環(huán),則可以使用continue語(yǔ)句作為快捷方式。
如果循環(huán)在其語(yǔ)句或表達(dá)式的任何部分中沒有可觀察的行為(I / O,易失性訪問,原子操作或同步操作),則具有無限循環(huán)的程序具有未定義的行為。這允許編譯器優(yōu)化所有不可觀察的循環(huán),而不會(huì)證明它們終止。唯一的例外是表達(dá)式是常量表達(dá)式的循環(huán); while(true)
總是一個(gè)無止境的循環(huán)。
與所有其他選擇和迭代語(yǔ)句一樣,while語(yǔ)句可以建立塊范圍:表達(dá)式中引入的任何標(biāo)識(shí)符在語(yǔ)句后超出范圍。 | (自C99以來) |
---|
布爾和指針表達(dá)式經(jīng)常用作循環(huán)控制表達(dá)式。false
任何指針類型的布爾值和空指針值都等于零。
while
.
#include <stdio.h>#include <stdlib.h>#include <string.h>enum { SIZE = 8 };int main(void){ // trivial example int array[SIZE], n = 0; while(n < SIZE) array[n++] = rand() % 2; puts("Array filled!"); n = 0; while(n < SIZE) printf("%d ", array[n++]); printf("\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標(biāo)準(zhǔn)(ISO / IEC 9899:2011):
6.8.5.1 while語(yǔ)句(p:151)
C99標(biāo)準(zhǔn)(ISO / IEC 9899:1999):
6.8.5.1 while語(yǔ)句(p:136)
C89 / C90標(biāo)準(zhǔn)(ISO / IEC 9899:1990):
3.6.5.1 while語(yǔ)句