首页 > 解决方案 > 是 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

标签: c++c++11undefined-behavior

解决方案


推荐阅读