?
このドキュメントでは、 php中國語ネットマニュアル リリース
語句是按順序執(zhí)行的C程序的片段。任何函數(shù)的主體都是一個復(fù)合語句,而這個語句又是一系列的語句和聲明:
int main(void){ // start of a compound statement int n = 1; // declaration (not a statement) n = n+1; // expression statement printf("n = %d\n", n); // expression statement return 0; // return statement} // end of compound statement, end of function body
有五種類型的陳述:
1)復(fù)合陳述
2)表達(dá)式語句
3)選擇陳述
4)迭代語句
5)跳轉(zhuǎn)語句
任何語句都可以標(biāo)記,通過在語句本身之前提供一個名字后跟一個冒號。
identifier : statement | (1) | |
---|---|---|
case constant_expression : statement | (2) | |
default : statement | (3) |
1)轉(zhuǎn)到目標(biāo)。
2)switch語句中的case標(biāo)簽。
3)switch語句中的默認(rèn)標(biāo)簽。
任何語句(但不是聲明)之前都可以有任意數(shù)量的標(biāo)簽,每個標(biāo)簽聲明標(biāo)識符是標(biāo)簽名稱,在封裝函數(shù)中它必須是唯一的(換句話說,標(biāo)簽名稱具有函數(shù)范圍)。
標(biāo)簽聲明對其本身沒有影響,不會改變控制流,或以任何方式修改后面的語句的行為。
復(fù)合語句或塊是括號括起來的語句和聲明序列。
{ statement | declaration...(optional) } | (1) |
---|
復(fù)合語句允許將一組聲明和語句分組到一個單元中,這些單元可用于預(yù)期單個語句的任何位置(例如,在if語句或迭代語句中):
if (expr) // start of if-statement{ // start of block int n = 1; // declaration printf("%d\n", n); // expression statement} // end of block, end of if-statement
每個復(fù)合語句都引入了自己的塊范圍。
具有自動存儲持續(xù)時間的變量的初始值設(shè)定項在聲明塊內(nèi)聲明,VLA聲明符在控制流按順序通過這些聲明時執(zhí)行,就像它們是聲明一樣:
int main(void){ // start of block { // start of block puts("hello"); // expression statement int n = printf("abc\n"); // declaration, prints "abc", stores 4 in n int a[n*printf("1\n")]; // declaration, prints "1", allocates 8*sizeof(int) printf("%zu\n", sizeof(a)); // expression statement } // end of block, scope of n and a ends int n = 7; // n can be reused}
一個表達(dá)式后跟一個分號是一個聲明。
expression(optional) ; | (1) |
---|
典型C程序中的大多數(shù)語句都是表達(dá)式語句,例如賦值或函數(shù)調(diào)用。
沒有表達(dá)式的表達(dá)式稱為空語句。它通常用于為for或while循環(huán)提供一個空的主體。它也可用于在復(fù)合聲明結(jié)尾處或聲明之前攜帶標(biāo)簽:
puts("hello"); // expression statementchar *s;while (*s++ != '\0') ; // null statement
選擇語句根據(jù)表達(dá)式的值在幾個語句之一之間進(jìn)行選擇。
if ( expression ) statement | (1) | |
---|---|---|
if ( expression ) statement else statement | (2) | |
switch ( expression ) statement | (3) |
1)if 陳述
2)如果語句帶有else子句
3)切換語句
迭代語句重復(fù)執(zhí)行語句。
while ( expression ) statement | (1) | |
---|---|---|
do statement while ( expression ) ; | (2) | |
for ( init_clause ; expression(optional) ; expression(optional) ) statement | (3) |
1) while loop
2) do-while loop
3) for loop
跳轉(zhuǎn)聲明無條件傳輸流量控制。
break ; | (1) | |
---|---|---|
continue ; | (2) | |
return expression(optional) ; | (3) | |
goto identifier ; | (4) |
1)break語句
2) continue 語句
3)帶有可選表達(dá)式的return語句
4)goto聲明