c++ - 是 cout << (i++) << (i++) 未定义的行为
问题描述
我在想int i = 0; cout << (i++) << (i++);
c++11的输出是什么。
据我了解,此代码可以转换为operator<<(operator<<(cout, i++), i++)
. 我对吗?
我以为它会打印01
,但是,在我的 Ubuntu 系统中,它打印了10
.
为什么?是不是UB?如果它是一个UB,是否意味着它f(g(i++), i++)
也是UB?如果它不是 UB,为什么输出是10
,而不是01
?
解决方案
推荐阅读
- android - setOnClickListener 时对话框崩溃
- sql - 在没有函数的情况下比较 WHERE 子句中日期的最佳方法是什么?
- visual-studio - Nmake 构建失败
- haskell - 如何在 do 表达式中返回 True 或 False - Haskell
- c++ - yaml-cpp 可以用作仅标头库吗?
- javascript - 选择数据控制名称
- typescript - 为全局创建模拟
- javascript - 如何改变鼠标点击?从左键到按下滚轮
- html - 无法在本地 Safari 上加载/播放视频
- apache-spark - spark partitionBy内存不足故障