三目表示式

2021-08-18 01:38:22 字數 1617 閱讀 7122

對於有些選擇分支結構,可以使用簡單的條件運算子來代替. 如:

if(a可以用下面的條件運算子來處理

min=(a?a:b;

其中"(a"是乙個"條件表示式",它是這樣執行的:  如果a

條件運算子由兩個符號組成"?

"和":

", 要求有3個操作物件,所以也叫它三目運算子,它是c語言中唯一的三目運算子.

它的一般形式為:

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

以下是關於條件運算子的幾點說明:

(1)通常情況下,表示式1是關係表示式或邏輯表示式,用於描述條件表示式中的條件,表示式2和表示式3可以是常量,變數或表示式.例如:

(x==y)?'y':'n'

(d=b*b-4*a*c)>=0?sqrt(d):sqrt(-d)

ch=(ch>='a'&&ch<='z')?(ch+32):ch

以上均為合法的條件表示式.

(2) 條件表示式的執行順序為:先求解表示式1,若值為非0,表示條件為真,則求解表示式2,此時表示式2的值就作為整個條件表示式的值;

若表示式1的值為0,表示條件為假,則求解表示式3,表示式3的值就是整個條件表示式的值.例如:

(a>=0)?a:-a   執行結果是a的絕對值.

(3) 在程式中,通過把條件表示式的值直接賦予某個變數.例如:

min=(a(4)條件表示式的優先級別僅高於賦值運算子,而低於前面遇到過的所有運算子.

因此,min=(a(5) 條件運算子的結合方向為"自右至左".

(6) 條件表示式允許巢狀,即允許條件表示式中的表示式2和表示式3又是乙個條件表示式.例如:

x>0?1:x<0?-1:0

上述條件表示式中,表示式3部分又是乙個條件表示式.根據條件表示式的結合性,上述條件表示式等價於:

x>0?1:(x<0?-1:0)

其作用是判斷x的符號情況.當x為正數時,該條件表示式的值為1;當x為負數時,該條件表示式的值為-1;當x為0時,該條件表示式的值為0.

(7) 條件表示式不能取代一般的if語句,僅當if語句中內嵌的語句為賦值語句(且兩個分支都給同一變數賦值)時才能代替if語句.例如:

if(a%2==0)

printf("even/n");

else

printf("odd/n");

不能寫成:

(a%2==0)?printf("even/n"):printf("odd/n");

但可以用下面語句代替:

printf("%s/n",(a%2==0?"even":"odd");

該語句的作用是:若 a 為偶數,輸出 even;若 a 為奇數,輸出odd.

(8) 表示式1,表示式2,表示式3的型別可以不同.此時條

件表示式的值的型別為它們中較高的型別.例如:

main()

該程式的作用是從鍵盤輸入任意乙個字元,判別它們是否大寫字母,如果是,輸出乙個@;否則按原樣輸出 dot

上例中,程式第6行是關鍵語句,該語句實現輸入字元的判斷,選擇與更換工作.

其執行過程為:先由此語句中的賦值號右側的條件運算子對輸入的字元進行判斷和選擇,若ch>='a'&&ch<='z'成立,說明ch是大寫英文本母,此時選@;否則仍選原字元ch,然後把選擇的結果賦值給原變數ch 。

本文章引用

三目表示式的運用

舉例如下 max a b a b 取變數a,b中較大的乙個,並賦值給變數max 三目運算子是?結構的運算 所謂三目就是需要三個變數對能進行運算的操作 舉個簡單的例子 a 2 1?3 4 可分成幾個部分,用括號分開 a 2 1 3 4 最左邊是賦值操作 第二個部分是乙個判斷 第三和第四部分是兩個常數 ...

Python and or以及三目表示式語法

在python中,and自左向右掃瞄布林表示式,如果所有值為真,則返回最後乙個為真的表示式,如果為假,則返回第乙個為假的表示式,例如 print 2 and1 and3 這種情況下列印的值為3,即整個表示式中最後乙個為真的部分 print 1 and3 and0 and4 這種情況下列印第乙個為假的...

三目運算的優先順序( 表示式)

今天寫乙個ios的外掛程式,高度總是出問題,檢查語句感覺沒有什麼問題。cgfloat height adaptation4ios iphonescreencontent height systemutils isios7 20 0 realsearchbar.frame.size.height 但是...