我遇到了一些我无法理解的东西。
我有这段代码:
cout << "f1 * f1 + f2 * f1 - f1 / f2 is: "<< f1 * f1 + f2 * f1 - f1 / f2 << endl;
所有的"f"都是对象,而且所有运算符都被重载了。
奇怪的是第一次计算使用了/
运算符,然后是第二个*
,接着是第一个*
;之后是+
运算符,最后是-
运算符。
所以基本上,/
和*
从右到左运行,而+
和-
运算符则从左到右运行。
我进行了另一个测试…… 我检查了这段代码:
cout << "f1 * f1 / f2 is: " << f1 * f1 / f2 << endl;
现在,第一个运算符是
*
,然后才是/
运算符。现在,它从左到右工作。有人能帮我理解为什么方向会有区别吗?
十分感谢!
*
和/
的顺序无关紧要,所以它以某种“优化”的方式执行了它?! - Draco Ater