为什么这个程序输出4而不是3?

时间:2014-05-21 16:04:51

标签: c++

int main()
{
   int var = 1;
   var += ++var;
   cout<<var;
   return 0;
}

在Java中,这将按预期输出3,但在C ++(上面)中输出4.为什么?

1 个答案:

答案 0 :(得分:6)

因为这是未定义的行为。您在没有插入序列点的情况下修改和访问同一个变量,因此结果完全取决于编译器。如果你用clang编译它,你会看到:

unsequenced modification and access to 'var'

我实际上得到4作为答案,但它同样可以是3,7,123125123或&#34; Lobster&#34;。