基本介紹
- 中文名:條件運算符
- 外文名:min=(a<b)?a:b
- 性質:運算符
- 屬性:條件
- 程式示例:ChooseDemo05.java
- 適用範圍:程式開發
C語言,運算符,優先權,結合性,JAVA語言,形式,求值規則,說明,運算符妙用,
C語言
運算符
表達式為:表達式1?表達式2:表達式3
先求解表達式1,
若其值為真(非0)則將表達式2的值作為整個表達式的取值,
否則(表達式1的值為0)將表達式3的值作為整個表達式的取值。
例如:
1、max=(a>b)?a:b
就是將a和b二者中較大的一個賦給max。
2、min=(a<b)?a:b
就是將a和b二者中較小的一個賦給min。
優先權
例如:
⑴ m<n ? x : a+3
等價於:(m<n) ?(x) :(a+3)
⑵ a++>=10 && b-->20 ? a : b
等價於:(a++>=10 && b-->20) ? a : b
⑶ x=3+a>5 ? 100 : 200
等價於:x= (( 3+a>5 ) ? 100 : 200 )
結合性
條件運算符具有右結合性
當一個表達式中出現多個條件運算符時,應該將位於最右邊的問號與離它最近的冒號配對,並按這一原則正確區分各條件運算符的運算對象。如果在問號和冒號之間還有一個問號或者冒號,應該滿足就近配對,使結構不發生紊亂。
例如:
w<x ? x+w : x<y ? x : y
與 w<x ? x+w : ( x<y ? x : y) 等價
與 (w<x ? x+w : x<y) ? x : y 不等價
a>b ? c>d ? e : f : g
與a>b ? (c>d ? e : f) : g等價
JAVA語言
形式
關係表達式 ? 表達式1 : 表達式2
求值規則
求解關係表達式,根據關係表達式的布爾值決定取值:關係表達式的值為true時取表達式1的值;關係表達式的值為false時取表達式2的值。
說明
1、條件運算符的優先權低於關係運算符和算術運算符,高於賦值運算符。
2、JAVA中條件運算表達式中的關係表達式值的類型必須為布爾類型,只能是true或false。
3、結合性也是右結合性。
4、與C語言不同的是,JAVA中條件表達式的值必須參與運算。
publicclassdemo{publicstaticvoidmain(String[]args){inta=10,b=20,y;a>b?(y=a):(y=b);//1,這樣寫是錯誤的y=a>b?a:b;//2,這樣寫是正確的y=a<b?b:b<c?a:c;//3,這樣寫是正確的}}
以上程式中,1處錯誤是由於條件表達式的值沒有參與運算,不能構成語句。3處(b<c?a:c)先結合,再將這個值參與到另一個條件運算中去,是合法的,這也說明了條件運算符的右結合性。
運算符妙用
——用條件表達式判斷輸出單詞的單複數。
程式示例:ChooseDemo05.java
程式中會自動根據apples的個數來輸出單詞的單數或複數。
publicclassChooseDemo05{publicstaticvoidmain(String[]args){intapples=1;//蘋果的個數System.out.println("Ihave"+apples+"apple"+(apples==1?".":"s."));}}
當然,還有其他的套用:
1、 在某些地方使用“他”還是“她”。
2、日期輸出時決定使用後綴“st”、“nd”等。