Поведение условного оператора в арифметической операции

Я знаю, что это старо, но вы также должны попробовать Zombie.js . Безголовый браузер, безумно быстрый и идеальный для тестирования!

0
задан Chinmay Joshi 15 January 2019 в 16:45
поделиться

2 ответа

Значение t2 зависит от приоритета оператора модуля %, сложения + и троичного оператора ?:.

Полный список приоритетов операторов C можно найти, перейдя по по этой ссылке.

В вашем случае оператор модуля имеет наивысший приоритет, затем следует сложение и затем троичный оператор.

0
ответ дан Jonathan Leffler 15 January 2019 в 16:45
поделиться

Случай 1: int t2=temp%100 + temp>99?2000:1900; переписать для ясности как: int t2=(temp%100 + temp)>99 ? 2000 : 1900;

И это выражение: temp%100 + temp равно 140, что больше 99, поэтому выражение имеет значение 2000 .


Случай 2: int t2=temp%100 + (temp>99?2000:1900);

temp не является GreaterThan 99, поэтому выражение равно 1900 и добавлено к temp%100, в результате чего получается 1970 [1121 ]


Случай 3: int t2= temp>99?2000:1900 +temp%100;

temp не является GreaterThan 99, поэтому выражение равно 1900+70, в результате чего в 1970 году


это это все порядок операций; * и / имеют приоритет над + и -, все операторы имеют приоритет.

0
ответ дан abelenky 15 January 2019 в 16:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: