C++ 中的递增/递减和输出流运算符优先级
increment/decrement and output stream operator precedence in c++
为什么下面的代码片段输出0 6 20 42 72 110
不0 4 16 36 64 100
?
for(int i=0;i<11;i++){
cout<< i * i++ <<" ";
}
根据C++运算符优先级后缀/后缀递增和递减的优先级高于乘法,这意味着"i"将在乘法之前递增。
编辑:根据运算符优先级问题,他们说运算符优先级不会以任何方式确定运算符的执行顺序。运算符优先级仅定义了运算符及其操作数之间的分组,那么cout<< i * i++ <<" ";
如何分组呢?
不保证i * i++
中操作数的计算顺序。您希望它是从左到右的,但编译器正在从右到左实现它。这意味着增量发生在它评估左侧i
之前,这意味着它打印1 * 0
、3 * 2
、5 * 4
等。
相关文章:
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 将异类初始值设定项列表传递给流运算符
- C++ 中完全自定义的流运算符
- 参数相关查找和流运算符重载
- 如何在C++中编写 ostream 的向量,它接收所有不同的输出流,如 cout、ostringstream 和 ofs
- 在输出流中插入换行符
- 在类外部重载输入和输出流
- 通用容器的输出流
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- C++ 输出流运算符 <<() 中的字符何时加宽?
- 编译器将输出的流运算符<<解释为用于按位左移的二进制运算符<<
- 如何为提升日志和自定义类型定义输出流运算符
- C++ 中的递增/递减和输出流运算符优先级
- 输出流中的运算符优先级C++
- 输出流运算符的重载
- 重载类的输出流运算符
- C++ 编译器选择输出流运算符<<的错误重载
- C++:输入和输出流运算符:关联性
- 如何使用标头中定义的输出流运算符