C ++操作太混乱了吗?

时间:2016-12-16 22:49:29

标签: c++ operations

我似乎无法理解这个操作。 以下代码的输出是什么? 我试过解释为什么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.但我无法理解这个问题。

2 个答案:

答案 0 :(得分:4)

  

但我无法理解它。

当发生这种情况时,您可以尝试简化语句/表达式。

由于使用了后增量运算符,

b = a++;

相当于:

b = a;
a = a+1;

由于使用了预增量运算符,

cout<<++b;

相当于:

b = b+1;
cout << b;

希望现在有意义。

答案 1 :(得分:0)

  

为什么b有两个不同的值

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

由于a为3,因此:

b=a++;

b设置为3,因为在表达式中使用a的值后,增量后操作会修改a的值。

cout<<++b;

这输出4,因为预增量操作在表达式中使用之前修改b的值。由于b3开头,因此会增加到4,然后在表达式中使用。