C++ 在链式乘法中的顺序是什么?
int a, b, c, d;
// set values
int m = a*b*c*d;
最佳答案
运算符 *
有 left to right结合性:
int m = ((a * b) * c) * d;
虽然在数学中它并不重要(乘法是 associative ),但在 C 和 C++ 的情况下,我们可能有或没有溢出取决于顺序。
0 * INT_MAX * INT_MAX // 0
INT_MAX * INT_MAX * 0 // overflow
如果我们考虑浮点类型或运算符重载,事情就会变得更加复杂。查看 @delnan 和 @melpomene 的评论。
关于c++ - 乘法的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31630953/