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

What is the output of following code (answer varies on diff. compilers)?

本文关键字:编译器 答案 代码 输出 是什么      更新时间:2023-10-16
#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 编译器时,输出是不同的。

因此,请解释代码的背景工作。

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

这里根本没有指定 '++j' 和 'j++' 的执行顺序(它们都是函数运算符 <<(( 参数(。编译器将此视为未定义的行为。在这条线上,任何事情都可能发生,不能保证任何结果。你可以在这里阅读它。