Как определяется порядок оценки в случае того же приоритета оператора?
В этом выражении есть связь между операторами одинакового приоритета (/
а также *
):
a = 3 / 2 * 5;
Как определяется, какая операция оценивается первой?
1 ответ
Он всегда сгруппирован слева направо, т.е.
a = (3 / 2) * 5
Когда операторы имеют одинаковый приоритет, в игру вступает ассоциативность. Окончательное объяснение этому показывают грамматики для C и C++.
Обратите внимание, что это может быть причиной некоторых неприятных ошибок, например
2 / 3 * 1.0
это double
тип равен нулю; первая часть выражения равна 0 целочисленным делением.