计算的次序

    在表达式中如果有布尔 操作、算术运算、位操作运算等混合运算,应该始终在适当的地方加上括号,使之清楚明了。优先级和结合性规则告诉我们哪些符号组成一个意群,但这些意群内部是如何进行计算的次序是未定义的。例如下面的表达式:

x = f() + g() * h();

分析:

       g()和h()的返回值先组成一个意群,执行乘法,但g()和h()的调用可能以任何顺序出现。(g()的调用不一定早于h())。

类似,f()可能在乘法之前也可能在乘法之后调用,也可能在g()和h()之间调用。惟一可以确定的是乘法会在加法之前执行,因为乘法的结果是加法运算的操作数之一。大部分编程语言并未明确规定操作数计算的顺序,之所以未做定义,是想让编译器充分利用自身的结构特点,或充分利用存储于寄存器中的值。

 

******************************************************************

*          转载注明出处,如有歧义,欢迎指正                      *

* http://blog.csdn.net/xiao3404/article/details/21513625    *

******************************************************************

原文地址:https://www.cnblogs.com/jinxiang1224/p/8468458.html