Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

It's well-known that the order of evaluation of a function's arguments in unspecified and can differ between different compilers.

What doesn't seem so clear is whether function calls can be interleaved, in the following sense:

f(g(h()), i(j()))

Let's assume the compiler chooses to evaluate f's first parameter first. Is the compiler free to call j between calling h and g? I believe so, but I don't know where to find confirmation in the Standard.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
329 views
Welcome To Ask or Share your Answers For Others

1 Answer

The evaluation order is unspecified - see section 5.2.2/8 of the Standard:

The order of evaluation of arguments is unspecified. All side effects of argument expression evaluations take effect before the function is entered.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...