子表达式评估顺序
我在J.1未指明的行为下查看了SO / IEC 9899:201x :
"The order in which subexpressions are evaluated and the order in which side effects take place, except as specified for the function-call (), &&, ||, ?:, and comma operators (6.5)."
这是否意味着
func1() + func2();
func2()可以在func1()之前执行,或者甚至在func1()期间执行?
在当前标准(ISO / IEC 9899:1999)中,函数调用之间存在一个序列点,但未指定操作数到+
的评估顺序,因此可以在func2
之前或之后调用func2
但函数调用不得重叠或以任何方式交错。
这意味着,如果需要, func1
和func2
中的每一个都可以与某些共享数据交互,而不会以意外的方式在其下进行数据更改。
不是在期间,但肯定是1或2或2然后1。