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

increment/decrement and output stream operator precedence in c++

本文关键字:输出流 运算符 优先级 C++      更新时间:2023-10-16

为什么下面的代码片段输出0 6 20 42 72 1100 4 16 36 64 100

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

根据C++运算符优先级后缀/后缀递增和递减的优先级高于乘法,这意味着"i"将在乘法之前递增。

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

不保证i * i++中操作数的计算顺序。您希望它是从左到右的,但编译器正在从右到左实现它。这意味着增量发生在它评估左侧i之前,这意味着它打印1 * 03 * 25 * 4等。