2015-11-11 7 views
0

Как эти две строки утверждения отличаются?Colon if statement difference

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

Если я даю значение а = 20, то

Первая линия дает Ь = 20, с = 0 Второй строкой дает Ь = 0, С = 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;