以下代码的输出是什么(答案因差异编译器而异)?

时间:2017-03-22 03:54:42

标签: c++

#include <iostream>

using namespace std;

int main(){

int j=0;

cout << ++j << j++ << j;

return 0;
}

据我所知,代码的输出必须是1 1 2,但代码的输出是2 0 2,这个答案因编译器而异,我使用的是最新版本的gcc。但是当我使用turbo c编译器时,输出是不同的。

因此,请解释代码的后台工作。

1 个答案:

答案 0 :(得分:1)

cout << ++j << j++ << j;

这里没有指定'++ j'和'j ++'的执行顺序(它们都是函数运算符&lt;&lt;()参数)。编译器将此视为未定义的行为。在这一行,任何事情都可能发生,并且没有保证结果。你可以阅读它here