В выражении вида
f( g(), h() );
порядок оценки g()
и h()
не определен. Уточняется только, что одно должно произойти раньше другого. Если g()
и h()
имеют видимые побочные эффекты, от которых зависит выполнение программы, является ли это неопределённым поведением?
int x = 1; int f() { return 1 / x; } int g(int,int) { return --x; } int main() { g(g(0, 0), f()); }
. Эта программа имеет неопределенное поведение, хотя ваша конкретная реализация может никогда не вычислятьg(0,0)
доf()
. - person Johannes Schaub - litb   schedule 02.01.2016