- 零基礎學C語言程序設計
- 宋娟編著
- 1550字
- 2022-05-06 19:49:53
3.5 狀態處理
狀態數據一般用于存放某種狀態。一般狀態包括真或假兩種狀態。在編程中,默認使用1表示真,使用0表示假。在C語言中,提供了4種對狀態數據進行處理的運算符。本節將詳細講解狀態處理要使用到的運算符。
3.5.1 條件運算符

條件運算符(?:)屬于三目運算符,擁有3個操作數,并根據操作數1的狀態選擇運算值。如果操作數1的狀態為真,則運算值為操作數2;如果操作數1的狀態為假,則運算值為操作數3。條件運算符的語法如圖3.28所示。

圖3.28 條件運算符的語法
【示例3-42】使用條件運算符。
程序如下:

運行程序,輸出以下內容:

在上面程序中,由于操作數1為表達式10>7,而該表達式的狀態為真,所以該程序的運行結果為操作數2,即10。
3.5.2 邏輯運算符

有時我們會看到這樣的場景:一個小隊的隊長發布一條任務后,隊員們會挨個兒進行回復,如果全部隊員都回復了“是”,這個小隊才會出發執行該任務,但只要有一個隊員回復“否”,就會暫停執行該任務。在這里就涉及多次判斷是否符合條件,并要進行多次回復的情況,如圖3.29所示。

圖3.29 多次判斷是否符合條件
在C語言中,提供了3種邏輯運算符,即邏輯與、邏輯或及邏輯非。邏輯運算符可以用于判斷是否符合條件,然后進行邏輯運算。
1. 邏輯與運算符
邏輯與運算符(&&)屬于二目運算符,擁有兩個操作數。
邏輯與運算符的語法如下。

其中,操作數1與操作數2都屬于條件表達式。如果這兩個操作數的狀態都為真,則運算值為1(表示真),否則運算值為0(表示假)。
【示例3-43】使用邏輯與運算符。
程序如下:

運行程序,輸出以下內容:

在上面程序中,操作數1為表達式10>7,而該表達式的狀態為真;操作數2為表達式8>7,而該表達式的狀態為真。所以,表達式10>7&&8>7的運算結果為1(表示真)。
2. 邏輯或運算符
邏輯或運算符(||)屬于二目運算符,擁有兩個操作數。
邏輯或運算符的語法如下:

其中,操作數1與操作數2都屬于條件表達式。如果這兩個操作數中至少有一個操作數的狀態為真,則運算值為1(表示真)。如果這兩個操作數的狀態都為假,則運算值為0(表示假)。
【示例3-44】使用邏輯或運算符運算。
程序如下:

運行程序,輸出以下內容:

在上面程序中,操作數1為表達式7>7,而該表達式的狀態為假;操作數2為表達式10>7,而該表達式的狀態為真。所以,表達式7>7||10>7的運算結果1(表示真)。
3. 邏輯非運算符
邏輯非運算符“!”屬于一目運算符,擁有一個操作數。
邏輯非運算符的語法如下:

其中,操作數屬于條件表達式。如果這個操作數的狀態為真,則運算值為0(表示假)。如果這個操作數的狀態為假,則運算值為1(表示真)。
【示例3-45】使用邏輯非運算符。
程序如下:

運行程序,輸出以下內容:

在上面程序中,由于操作數1為表達式8<10,而該表達式的狀態為真。所以,表達式8<10的運算結果為0(表示假)。在書寫!(8<10)時,必須要加小括號,否則計算機會認為是!8。
注意:將使用邏輯運算符連接起來的表達式稱為邏輯表達式。邏輯運算的真值表如表3.7所示。
表3.7 邏輯運算的真值表

4. 短路原則
在C語言中,提供了短路原則,以減少邏輯與運算符、邏輯或運算符的運算量。短路原則是指如果通過第1個操作數就能得出運算結果,計算機就不會再對第2個操作數的狀態真假進行判斷,而會直接得出運算結果。
例如,在邏輯或運算中,如果操作數1的狀態為真,則計算機就不會再去判斷操作數2的狀態真假,而會執行短路原則,直接得出運算結果為1(表示真),如圖3.30所示。

圖3.30 短路原則
在生活中,我們也常常會使用到短路原則。例如,當我們考駕照(機動車駕駛證)時,如果不滿足年齡必須大于或等于18歲的這個條件,則無法參加駕照考試。
5. 邏輯運算優先級
在表達式中,如果同時出現多個邏輯運算符,一定要注意邏輯運算符優先級。邏輯運算符優先級如圖3.31所示。邏輯非運算符(?。橛医Y合的,邏輯與運算符(&&)、邏輯或運算符(||)為左結合的。

圖3.31 邏輯運算符優先級