Как определяется порядок оценки в случае того же приоритета оператора?

В этом выражении есть связь между операторами одинакового приоритета (/ а также *):

a = 3 / 2 * 5;

Как определяется, какая операция оценивается первой?

1 ответ

Он всегда сгруппирован слева направо, т.е.

a = (3 / 2) * 5

Когда операторы имеют одинаковый приоритет, в игру вступает ассоциативность. Окончательное объяснение этому показывают грамматики для C и C++.

Обратите внимание, что это может быть причиной некоторых неприятных ошибок, например

2 / 3 * 1.0

это double тип равен нулю; первая часть выражения равна 0 целочисленным делением.

Другие вопросы по тегам