首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这段话什么意思?关于求值顺序的解决办法

2013-07-04 
这段话什么意思?关于求值顺序的括号可以用做强制性的结组。例如,a*b/c表示(a*b)/c,要得到a*(b/c)就必须使用

这段话什么意思?关于求值顺序的
括号可以用做强制性的结组。例如,a*b/c表示(a*b)/c,要得到a*(b/c)就必须使用括号。如果用户不会发现其中的差异的话,a*(b/c)也可能被按照(a*b)/c的方式求值。特别地,对于许多浮点计算而言,a*(b/c)和(a*b)/c是截然不同的,所以编译器会按照写出的方式计算。
特别是红色的那部分,感觉很重要,但是看不明白。
[解决办法]
意思就是你本来是想算a*(b/c),结果你写成了a*b/c
[解决办法]
因为浮点数的计算是有精度误差的,所以a*b/c和a*(b/c)的值是不一样的
[解决办法]
同意楼上,因为浮点数的计算是有精度误差的,数学中的交换律和结合律可能并不存在。
[解决办法]
如果用户不会发现其中的差异的话,a*(b/c)也可能被按照(a*b)/c的方式求值:

这句话意思是,如果你不知道 a*b/c 和 a*(b/c) 这两个表达式其实是有区别的话,一般人就可能会直接使用a*b/c这个表达式而不会使用第二个表达式。但是这两个表达式,在不同的应用场景里面,其实是有很大区别的。如浮点运算场景。

热点排行