C专家编程-语言的特性之计算的次序

在优先级和结合性规则告诉哪些符号组陈给一个意群(这里g()*h()组成一个乘法的意群)的同时,这些意群内部如何进行计算的次序始终是未定义的。

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

g() 和 h() 的返回值先组成一个意群,执行乘法运算,但是 g() 和 h() 的调用可能以任何顺序出现(g() 的调用不一定早于 h())。类似, f() 可能在乘法之前也可能在乘法之后调用,也可能在g() 和 h() 之间调用。唯一可以确定的就是乘法会在加法之前执行。如果编写程序时要依赖这些意群计算的先后次序,那就是不好的编程风格。

之所以未作定义,是想让编译器充分利用自身架构的特点,或者充分利用存储于寄存器中的值。

你可能感兴趣的:(C专家编程-语言的特性之计算的次序)