Так оно и должно работать. Тернарный оператор не означает эквивалент регулярного оператора if
. Телами if
и else
являются утверждения , а части, следующие за ?
и :
, являются выражениями , которые должны оцениваться одним и тем же типом .
Иными словами: a = b ? c : d
не должен быть эквивалентен if (b) a = c; else a = d;
. Вместо этого b ? c : d
является выражением само по себе, а присвоение его результата a
не повлияет на результат.