表达式(f(x))+g(y)能确定求值顺序么?
本帖最后由 shendaowu 于 2013-07-05 08:00:48 编辑 如果不能的话,遇到这种表达式要怎么办?只能通过对象之间的隔离来避开由求值顺序的不确定导致的问题么?比如如果标题中的那个函数还是不能确定求值顺序的话,那么这两个函数只要不操作相同的变量是不是就不用考虑求值顺序了?
[解决办法]
括号并不是用来决定求值顺序的,是用来决定子表达式的划分的。
除了少数几个运算符外,多数运算符的求值顺序由编译器掌握。
但是,程序员可以通过变通,利用某些求值顺序确定的运算符才达到对求值顺序的控制,以楼主的问题为例,可以利用逗号表达式的固定求值顺序,如下这样做:
int fxResult;
int plusResult;
fxResult = f(x), plusResult = fxResult + g(x);