?
Ce document utilise Manuel du site Web PHP chinois Libérer
重復(fù)執(zhí)行一個(gè)語句,直到條件的值變?yōu)?false。測(cè)試發(fā)生在每次迭代之后。
do statement while ( expression ) ; |
---|
表達(dá) | - | 標(biāo)量類型的任何表達(dá)式。這個(gè)表達(dá)式在每次迭代之后被評(píng)估,并且如果它比較等于零,則退出循環(huán)。 |
---|---|---|
聲明 | - | 任何語句,通常是復(fù)合語句,它是循環(huán)的主體 |
do-while
語句會(huì)導(dǎo)致語句(也稱為循環(huán)體)被重復(fù)執(zhí)行,直到表達(dá)式(也稱為控制表達(dá)式)的比較值等于0.無論循環(huán)體是正常輸入還是跳轉(zhuǎn)到中間,都會(huì)重復(fù)執(zhí)行。聲明。
表達(dá)式的評(píng)估發(fā)生在每次執(zhí)行語句后(無論是正常輸入還是通過 goto)。如果需要在循環(huán)體之前評(píng)估控制表達(dá)式,則可以使用 while 循環(huán)或 for 循環(huán)。
如果循環(huán)的執(zhí)行需要在某個(gè)時(shí)候終止,break 語句可以用作終止語句。
如果需要在循環(huán)體的末尾繼續(xù)執(zhí)行循環(huán),則可以使用 continue 語句作為快捷方式。
如果循環(huán)在其語句或表達(dá)式的任何部分中沒有可觀察的行為(I / O,易失性訪問,原子操作或同步操作),則具有無限循環(huán)的程序具有未定義的行為。這允許編譯器優(yōu)化所有不可觀察的循環(huán),而不會(huì)證明它們終止。唯一的例外是表達(dá)式是常量表達(dá)式的循環(huán); do {...} while(true);
總是一個(gè)無止境的循環(huán)。
與所有其他選擇和迭代語句一樣,do-while 語句會(huì)建立塊范圍:表達(dá)式中引入的任何標(biāo)識(shí)符在語句后超出范圍。 | (自C99以來) |
---|
布爾和指針表達(dá)式經(jīng)常用作循環(huán)控制表達(dá)式。false
任何指針類型的布爾值和空指針值都等于零。
do
, while
.
#include <stdio.h>#include <stdlib.h>enum { SIZE = 8 };int main(void){ // trivial example int array[SIZE], n = 0; do array[n++] = rand() % 2; // the loop body is a single expression statement while(n < SIZE); puts("Array filled!"); n = 0; do { // the loop body is a compound statement printf("%d ", array[n]); ++n; } while (n < SIZE); printf("\n"); // the loop from K&R itoa(). The do-while loop is used // because there is always at least one digit to generate int num = 1234, i=0; char s[10]; do s[i++] = num % 10 + '0'; // get next digit in reverse order while ((num /= 10) > 0); s[i] = '\0'; puts(s);}
可能的輸出:
Array filled!1 0 1 1 1 1 0 04321
C11 standard (ISO/IEC 9899:2011):
6.8.5.2 The do statement (p: 151)
C99 standard (ISO/IEC 9899:1999):
6.8.5.2 The do statement (p: 136)
C89/C90 standard (ISO/IEC 9899:1990):
3.6.5.2 The do statement