3.4-括号与求值顺序

括号只能重写操作符的优先级,但是不能决定操作数的求值顺序。
比如:

1
f()+g()*z();

我们都知道乘法会先于加法做运算,但是我们不能决定这3个函数的求值顺序。哪怕你写成这样:

1
( f() + g() ) * z()

虽然,你保证了加法会在乘法之前,先计算。但是还是不能保证编译器一定会先执行括号内的函数。
那么,怎样确定函数或者表达式的求值顺序呢?
把这些函数,或者表达式,分开来写:

1
2
f();
g();

这样我们就能确定 f() 一定会在 g() 之前,先被执行。

另外,函数的参数求值顺序,是不确定的。