为什么以下代码段输出为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++ <<" ";
进行分组?
答案 0 :(得分:0)
不保证index.html
中操作数的评估顺序。你希望它是从左到右,但你的编译器是从右到左实现它。这意味着增量在评估左侧i * i++
之前发生,这意味着它会打印i
,1 * 0
,3 * 2
等。