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

Categories

0 votes
336 views
in Technique[技术] by (71.8m points)

c++ - Nested function calls order of evaluation

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

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

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...