5.5.3 无定形计算
在许多语言中,外部表达式求值的顺序并非按语言指定。因此,如果 ranf(x)() 是随机数生成器,在两个 ranf(x)() 调用的求值顺序发生变化时,表达式 ranf(x) * a + ranf(x) * b() 可能会为不同的编译器给出不同结果,或者在相同编译器上给出不同优化级别。
避免使用具有两个外部引用的表达式,将这样的表达式拆分为多个语句,每个语句中最多有一个外部引用。因此
z = ranf(x) * a + ranf(x) * b()
可替换为
t = ranf(x) * a()
z = t + ranf(x) * b()。