1. 程式人生 > >第 7 章 C控制語句:分支和跳轉

第 7 章 C控制語句:分支和跳轉

7.1 if 語句

if 語句被稱為分支語句或選擇語句,其一般形式為:

if(expression)
    statement

若 expression 為真,執行 statement;否則,跳過該語句。statement 可以是單個語句也可以是複合語句。

7.2 在if 語句中新增 else 關鍵字

7.2.1 if else 語句

if else 語句使使用者可以在兩個動作之間進行選擇,其一般形式為:

if(expression)
    statement1
else
    statement2

 若 expression 為真,執行 statement1;否則,執行 statement2。語句可以是單個語句也可以是複合語句。

7.2.2 多重選擇:else if

else if 可以擴充套件 if else 結構來適應兩個以上的選擇情況,其一般形式為:

if(expression)
    statement1
else if(expression)
    statement2
else
    statement3

若 expression1 為真,執行 statement1;若 expression1 為假而 expression2 為真,執行 statement2;否則,執行 statement3。語句可以是單個語句也可以是複合語句。在編譯器的限制範圍內,可以把多個所需的 else if 語句連成一串使用。

7.2.3 else 與 if 配對

else 與 if 配對規則:若沒有花括號指明,else 和與它最接近的一個 if 相匹配。

7.2.4 多層巢狀的 if

7.2.2所示的是巢狀 if 的一種形式,這是從一系列的二選一中進行選擇的。當進行了特定的選擇後又導致額外的選擇時將使用另一種巢狀 if。例:一個程式可能用 if else 在男和女之間選擇,在 if else 的每個分支中可能包含另一個 if else 來區別不同收入群體。

7.2.5 getchar() 和 putchar()

getchar()函式沒有引數,它返回來自輸入裝置的下一個字元;putchar()函式列印它的引數。

ch = getchar();    /*讀取下一個輸入字元並賦給變數 ch */
putchar(ch);       /*將先前賦給 ch 的值作為字元打印出來*/

7.2.6 ctype.h 系列字元函式

ctype.h 標頭檔案包含一系列標準的函式,可以用來分析字元。這些函式接受一個字元作為引數,如果該字元屬於某特定的種類則返回非零值(真),否則返回零(假)。

7.3 獲得邏輯值

邏輯運算子
運算子(傳統寫法) 含義 iso646.h
&& and
|| or
! not

邏輯表示式是從左到右求值的。一旦發現有使表示式為假的因素,立即停止求值。&&和||運算子是序列的分界點 ,在程式從一個運算元前進到另一個運算元之前,所有的副作用都會生效。例如:

while(x++ <10 && x + y <20)

&&是序列分界點,保證在對右邊表示式求職之前,先把 x 的值加 1。

7.4 條件運算子 ?:

條件預算符 ?: 是C中唯一的一個三元運算子,條件表示式的一般形式為:

expression1 ? expression2: expression3    /*條件表示式*/

若 expression1 為真,條件表示式的值等於 expression2 的值;若 expression1 為假,條件表示式的值等於 expression3 的值。

7.5 多重選擇:switch 和 break

switch (expression)
{
	case lablel1:
		statement1	/*可選*/
		break;          /*可選*/
	case lablel2:
		statement2	/*可選*/
		break;          /*可選*/
	default:		/*可選*/
		statement3	/*可選*/
}

圓括號中的 switch 判斷表示式應具有整數值(包括 char 型別)。case 標籤必須是整型(包括 char)常量或整數常量表達式。程式按照 expression 值跳轉到相匹配的 case 標籤處,然後程式流程繼續通過所有剩餘的語句,直到再次由 break 語句重定向。如果沒有與 expression 值相匹配的 case 標籤,那麼控制定位到標籤為 default 的語句。否則,控制傳遞 switch 的下一條語句。

7.6 迴圈輔助手段:continue、break、goto

7.6.1 continue 語句

continue 語句可以與三種迴圈形式中的任一種一起使用,但不能和 switch 語句一起使用。它導致程式控制跳過迴圈中的剩餘語句。對於 while 和 for 迴圈,開始下一個迴圈週期;對於 do while 迴圈,對退出條件進行判斷,若必要,開始下一個迴圈週期。

7.6.2 break 語句

break 語句可以與三種迴圈形式中的任一種以及 switch 語句一起使用。它導致程式控制跳過包含它的迴圈或 switch 語句的剩餘部分,繼續執行緊跟在迴圈或 switch 後的下一條命令。

7.6.3 goto 語句

goto 語句導致程式控制跳轉到由指定標籤定位的語句。/*最好不用*/