Dmitry Yemanov пишет:
Он в выражении func1() + func2() при включенной оптимизации сначала предпочитает выполнить func2 :-( На 2003-й студии та же фигня. Самое обидное, что в тестах уровня "палки и веревки" все ОК, а в рабочем проекте - ахтунг. Из-за этого до сих пор не могу баг-репорт им состряпать...
Аднака в С/С++ гарантируется выполнение слева на право только для операторов "&&", "||", ",". в остальных случаях компилятор волен выбирать любой порядок.
То же и при вызове функции, её аргументы могут вычисляться в любом порядке.

Ответить