注册 登录
编程论坛 C++教室

求大家看下这段代码奇怪的输出?

家力掠 发布于 2016-05-15 15:34, 3854 次点击
#include <iostream>

using namespace std;

int main()
{
    int count = 0;

    cout << count++ << count++ << count++ << endl;

    return 0;
}


为什么输出的是210而不是012呢?
3 回复
#2
rjsp2016-05-15 17:01
别研究了,这代码属于未定义行为
#3
林希志2016-05-19 15:38
cout与C语言的printf有相似之处,都是右结合性,(通俗的讲就是从右边开始输出)
#4
rjsp2016-05-19 23:20
以下是引用林希志在2016-5-19 15:38:32的发言:
cout与C语言的printf有相似之处,都是右结合性,(通俗的讲就是从右边开始输出)

我猜你所谓的右结合其实是入栈顺序,但这跟入栈顺序无关,其实相关的是求值顺序。
但对于这代码,即使C++规定了它的求值顺序也没用,“未定义”就是死刑终审,不要在未定义下讨论任何实现,不要将“未定义”和“实现定义”混淆,后者才是有确定结果的,虽然每个编译器的结果可能不相同。
1