C語言
運算符
表達式為:表達式1?表達式2:表達式3
先求解表達式1,
若其值為真(非0)則将表達式2的值作為整個表達式的取值,否則(表達式1的值為0)将表達式3的值作為整個表達式的取值。
例如:
1、max=(a>b)?a:b
就是将a和b二者中較大的一個賦給max。
2、min=(a
就是将a和b二者中較小的一個賦給min。
優先級
條件運算符優先級高于賦值、逗号運算符,低于其他運算符
例如:
⑴m
等價于:(m
⑵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
與w
與(w
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
以上程序中,1處錯誤是由于條件表達式的值沒有參與運算,不能構成語句。3處(b
運算符妙用
——用條件表達式判斷輸出單詞的單複數。
程序示例:ChooseDemo05.java
程序中會自動根據apples的個數來輸出單詞的單數或複數。
publicclassChooseDemo05{
publicstaticvoidmain(String[]args){
intapples=1;//蘋果的個數
System.out.println("Ihave"+apples+"apple"+(apples==1?".":"s."));
當然,還有其他的應用:
1、在某些地方使用“他”還是“她”。
2、日期輸出時決定使用後綴“st”、“nd”等。