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

Why does this program output 4, instead of 3?

本文关键字:程序 输出 为什么      更新时间:2023-10-16
int main()
{
   int var = 1;
   var += ++var;
   cout<<var;
   return 0;
}

在Java中,它将输出3,如预期的那样,但在c++中(如上所述),它将输出4。为什么?

因为这是未定义的行为。您正在修改和访问同一个变量,而没有中间的序列点,因此结果实际上取决于编译器。如果你用clang编译它,你会看到:

unsequenced modification and access to 'var'

我实际上得到的答案是4,但它同样可以是3,7,123125123或"Lobster"。