三目運算子詳解
對於有些選擇分支結構,可以使用簡單的條件運算子來代替。如:
if(a<b) min=a; else min=b;
可以用下面的條件運算子來處理
min=(a<b)?a:b;
其中"(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(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() { char c1, ch; ch = getchar(); c1 = ch <= 'Z' && ch >= 'A' ? ' @ ' : ch ; putchar(c1); }
該程式的作用是從鍵盤輸入任意一個字符,判別它們是否大寫字母,如果是,輸出一個@;否則按原樣輸出do上例中,程式第6行是關鍵語句,該語句實現輸入字元的判斷了,選擇與更換工作。
其執行過程為:先由此語句中的賦值號右側的條件運算子對輸入的字元進行判斷與選擇,若ch>='A'&&ch<='Z'成立,說明ch是大寫英文字母,此時選@;否則仍選原字元ch,然後把選擇的結果賦值給原變數ch 。
以上是三目運算符是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!