int z = 0; int foo(int x, int y) { return x + y; } int bar(int x) { z++; return x * x + z; } int baz(int x) { z--; return 2 * x + z; } int main() { int w = foo(bar(5), baz(3)); return w; } See also: http://en.wikipedia.org/wiki/Sequence_pointI think ',' in parameter lists are already sequence points.
They aren't, but a function call is a sequence point, so bar is guaranteed to be called before baz.