int main()
{
int var = 1;
var += ++var;
cout<<var;
return 0;
}
在Java中,这将按预期输出3,但在C ++(上面)中输出4.为什么?
答案 0 :(得分:6)
因为这是未定义的行为。您在没有插入序列点的情况下修改和访问同一个变量,因此结果完全取决于编译器。如果你用clang编译它,你会看到:
unsequenced modification and access to 'var'
我实际上得到4作为答案,但它同样可以是3,7,123125123或&#34; Lobster&#34;。