if語句的巢狀以及條件運算子和條件表示式(初學者)

2021-10-01 05:22:47 字數 1369 閱讀 3076

1、當if語句中的執行語句又是if語句時,則構成了if語句的巢狀情形。

其一般形式可表示為:

if()

if()……;

或:if()

if()語句1;

else 語句2;

else

if()語句3;

else 語句4;

注:if語句的巢狀不要太多,最好不超過5個。(避免邏輯錯誤)

在巢狀內的if語句可能又是if-else型,這將會出現多個if和多個else重疊的情況,這時要特別注意if和else的配對問題。

例:if(表示式1)

if(表示式2)

語句1;

else

語句2;

思考:else究竟與哪乙個if配對呢?

就近原則:為避免二義性,c語言規定,else總是與它前面最近的if配對。所以應理解為;

if(表示式1)

if(表示式2)

語句1;

else

語句2;

比較下列兩例,哪乙個是運用巢狀方法?

例1:

#includevoid

main()

例2:

#includevoid

main()

注:採用巢狀結構實質上是為了進行多分支選擇,實際上有三種選擇,即:a>b、a2、條件運算子和條件表示式

條件運算子為「?和:」是乙個三目運算子。

由條件運算子組成的條件表示式的一般形式為:

表示式1?表示式2:表示式3

其求值規則為:若表示式1的值為真,則以表示式2的值作為條件表示式的值,否則以表示式3的值作為整個條件表示式的值

條件表示式通常用於賦值語句之中:

例:if(a>b) max=a;

else max=b;

可用條件表示式寫為:

max=(a>b)?a:b;

語義:若a>b為真,則把a賦予max,否則把b賦予max。

注意:(1)條件運算子的運算優先順序低於關係運算子和算術運算子,但高於賦值運算子。因此max=(a>b)?a:b;可改為max=a>b?a:b;

(2)條件運算子?和:是一對運算子,不能分開單獨使用

(3)條件運算子的結合方向是自右向左。如:a>b?a:c>d?c:d應理解為a>b?a:(c>d?c:d)

例:

#includevoid

main()

補例:輸入乙個字元,判斷它是否為大寫字母,如果是,把它轉換成小寫字母,如果不是,不轉換。然後輸出最後得到的字元。

#includevoid

main()

條件運算子巢狀

條件運算子 都知道就不細說了,最簡單也是最常用的例子 n a b a b 在c primer plus第六版180頁看到了乙個例子,如下所示 const char x 2 20 const char y quillstone for int i 0 i 3 i cout i 2 i x i y x ...

條件運算子的巢狀問題

第乙個程式段 include intmain 輸出結果2342 對於k a a?a c b?b c 這個是巢狀。從右向左看條件運算子,乙個乙個看。對於 a a?a c b?b c 可以轉換為if else語句 if aif aelse k c else if bk b else k c 第二個程式段...

MySQL Where 條件語句介紹和運算子小結

where 條件 有時候運算元據庫時,只操作一些有條件限制的資料,這時可以在sql語句中新增where子句來規定資料操作的條件。語法 複製 如下 select column,from tb name where definition where 關鍵字後面接有效的表示式 definition 該表示...