Цитата(Палыч @ Jul 12 2011, 14:49)

Нет, зависит от "уровня" трансляторописателей, вернее их понимания "духа и буквы" стандарта.
То есть кто-то может неправильно понять стандарт и, соответвственно, написать компилятор с глюком. Спасибо за напоминание об это очевидном факте.
Цитата(Палыч @ Jul 12 2011, 14:49)

Тут с Вами не соглашусь. Приоритет всех мультипликативных операций (*, /, %) одинаков.
Я имел в виду в данном конкретном выражении: (x*5)/8.
Цитата(Палыч @ Jul 12 2011, 14:49)

Нет времени искать точную формулировку в стандарте, но, по-памяти: "порядок выполнения операций может быть изменён, если это не приводит к изменению значения выражения".
Нет нужды, я уже нашёл:
Цитата
The semantic descriptions in this International Standard describe the behavior of an abstract machine in which issues of optimization are irrelevant.
...
In the abstract machine, all expressions are evaluated as specified by the semantics. An actual implementation need not evaluate part of an expression if it can deduce that its value is not used and that no needed side effects are produced (including any caused by calling a function or accessing a volatile object).
Цитата(Палыч @ Jul 12 2011, 14:49)

С учетом того, что при выполнении операций могут возникать всякие-разные "неприятности" (типа переполнения результата), то понятие "неизменный результат" становится очень расплывчатым, и тут - простор для трансляторописателей...
В случае с целыми беззнаковыми числами никакой расплывчатости нет:
Цитата
A computation involving unsigned operands can never overflow, because a result that cannot be represented by the resulting unsigned integer type is reduced modulo the number that is one greater than the largest value that can be represented by the resulting type.
Не разобравшись в ситуации, не давайте вредных советов. Вдруг неокрепшие умы всерьёз воспримут.