C++操作太混乱?

C++ operation too confusing?

这个操作我好像看不懂。 以下代码的输出是什么? 我试过解释为什么 b 有两个不同的值,一个是 b=1+2,另一个是 b=2,因为 a++ 应该等于 a=1+a ,那么 cout 要求 ++b,哪个应该它应该等于 b=2-1 或 b=3-1?

int a=3;
int b=2;
b=a++;
cout<<++b;

我知道这个问题的答案是 4。但我想不通。

why b has two different values

b 没有两个不同的值。 ba 以及其他所有内容在任何给定时间始终具有一个值。它在不同时间可能有不同的值,但在给定时间它始终只有一个值。

因为a是3,那么:

b=a++;

b设置为3,因为post-increment操作在表达式中使用a的值后修改了a的值。

cout<<++b;

这会输出4,因为预自增操作在表达式中使用b之前修改了它的值。由于 b3 开始,它会递增到 4,然后在表达式中使用。

But i can't get my head around it.

发生这种情况时,您可以尝试简化 statements/expressions。


由于使用了post自增运算符,

b = a++;

相当于:

b = a;
a = a+1;

由于使用了前置自增运算符,

cout<<++b;

相当于:

b = b+1;
cout << b;

希望现在有意义。