2015-11-11 56 views
0

這兩行語句如何不同?冒號如果語句差異

a<=20? b=30: c= 30; 
(a<=20)?b:c = 30; 

如果我給的= 20的值然後

第一行給出了B = 20,C = 0 第二行給出了B = 0,C = 0

未分配問題。

+3

這是一個*轉讓*問題;你不*賦值給'b';) – ChiefTwoPencils

+0

這很好。初始化b –

回答

1

ternary conditional operator規則,

a<=20? b=30: c= 30;是相同:

if (a <= 20) { 
    b = 30; 
} else { 
    c = 30; 
} 

(a<=20)?b:c = 30;是相同:

if (a <= 20) { 
    b; 
} else { 
    c = 30; 
} 

所以情況#1和病例#之間的差值2是b是否在條件爲true時設置。

1

運算符優先級:
這樣的:

(a<=20)?b:c = 30; 

被解釋爲:

(a<=20) ? (b) : (c=30) ; 

你可能想

((a<=20)?b:c) = 30;