複製鏈接
請複製以下鏈接發送給好友

條件運算符

鎖定
條件運算符,是一個程序開發的術語,優先級高於賦值逗號運算符,低於其他運算符。適用於程序開發。
中文名
條件運算符
外文名
min = (a < b) ? a : b
性    質
運算符
屬    性
條件
程序示例
ChooseDemo05.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中條件表達式的值必須參與運算。
public class Demo{
    public static void main(String[] args){
        int a = 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的個數來輸出單詞的單數或複數。
public class ChooseDemo05{
    public static void main(String[] args){
        int apples = 1;//蘋果的個數
        System.out.println("I have" + apples + "apple" + (apples == 1 ? "." : "s."));
    }
}
當然,還有其他的應用:
1、 在某些地方使用“他”還是“她”。
2、日期輸出時決定使用後綴“st”、“nd”等。