Oracle® Solaris Studio 12.4:数值计算指南

退出打印视图

更新时间: 2015 年 1 月
 
 

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()