c++ - 乘法的顺序

标签 c++ operator-keyword operator-precedence

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/

相关文章:

c++ - 将 12 位颜色值转换为 8 位颜色值 C++

c++ - 创建一个数据库连接数组

scala - 为什么 !== 在 Scala 中的优先级低于 ===?

c++ - 在模板类中创建重载友元运算符的模板

c - 如果检查 null 然后检查 C 中的其他条件,复合是否总是安全的?

xml - XPath 中运算符的优先级是什么?

c++ - 虚拟继承对构造函数的影响

c++ - 如何使用 boost 预处理器生成访问器?

ruby - 为什么 Ruby `**` 运算符的优先级高于一元运算符 `-` ?

c++ - 运算符重载和命名空间