【发布时间】:2020-04-13 16:23:10
【问题描述】:
int a = 1;
a += ++a;
cout << a << endl; // 4
int a = 1;
a += a++;
cout << a << endl; // 3
为什么这两个例子有不同的行为?
【问题讨论】:
-
++a表示变量将在所有其他事物之前增加一。但是a++意味着当一切都完成后,你的变量会增加。在这种情况下,第一步将是a+a,这两个值都是1,等于2。然后a将增加到3 -
请注意,您的示例仅具有自 C++17(及更高版本)以来定义明确的行为。 C++17 之前的第二个示例具有未定义的行为,C++11 之前的第一个示例也是如此,请参阅Undefined behavior and sequence points
标签: c++