#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编译器时,输出是不同的。
因此,请解释代码的后台工作。
答案 0 :(得分:1)
cout << ++j << j++ << j;
这里没有指定'++ j'和'j ++'的执行顺序(它们都是函数运算符&lt;&lt;()参数)。编译器将此视为未定义的行为。在这一行,任何事情都可能发生,并且没有保证结果。你可以阅读它here。