printf("%d", 7 - 9 % 4 * 2);
У меня есть 3 в качестве отпечатанного ответа, но ответ был 5. Может ли кто-нибудь сказать мне, почему я получил это неправильно?C базовый код: Таблица приоритета/ассоциативности
printf("%d", 7 - 9 % 4 * 2);
У меня есть 3 в качестве отпечатанного ответа, но ответ был 5. Может ли кто-нибудь сказать мне, почему я получил это неправильно?C базовый код: Таблица приоритета/ассоциативности
Умножение, деление и модуль имеют одинаковый приоритет, и все они имеют более высокий приоритет, чем сложение и вычитание. Если два оператора имеют одинаковый приоритет, они (в большинстве случаев) оцениваются слева направо.
Таким образом, выражение эффективно выглядит следующим образом:
7 - ((9 % 4) * 2)
Что дает:
7 - ((9 % 4) * 2) = 7 - (1 * 2) = 7 - 2 = 5
Вы, вероятно, сделал деление вместо модуля:
7 - ((9/4) * 2) = 7 - (2 * 2) = 7 - 4 = 3
awesome, спасибо! просто понял, что я разделил вместо использования модуля – okbuthow
я получаю 5, как ожидается, , Вы уверены, что в вашей программе нет ничего другого? –
сравнить: http://goo.gl/8enkEU –
это было написано на тесте, и я пытаюсь выяснить, почему моя логика была неправильной, когда я ее взял. – okbuthow