c ++中的递增/递减和输出流运算符优先级

时间:2017-11-10 14:54:10

标签: c++ operator-precedence

为什么以下代码段输出为0 6 20 42 72 110而不是0 4 16 36 64 100

for(int i=0;i<11;i++){
    cout<< i * i++ <<" ";
}

根据C++ Operator Precedence后缀/后缀增量和减量具有比乘法更高的优先级,这意味着“i”将在乘法之前递增。

编辑: 根据{{​​3}}问题,他们说运算符优先级不以任何方式决定运算符的执行顺序。运算符优先级仅定义运算符及其操作数之间的分组,那么如何对cout<< i * i++ <<" ";进行分组?

1 个答案:

答案 0 :(得分:0)

不保证index.html中操作数的评估顺序。你希望它是从左到右,但你的编译器是从右到左实现它。这意味着增量在评估左侧i * i++之前发生,这意味着它会打印i1 * 03 * 2等。