我似乎无法理解这个操作。 以下代码的输出是什么? 我试过解释为什么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.但我无法理解这个问题。
答案 0 :(得分:4)
但我无法理解它。
当发生这种情况时,您可以尝试简化语句/表达式。
由于使用了后增量运算符,
b = a++;
相当于:
b = a;
a = a+1;
由于使用了预增量运算符,
cout<<++b;
相当于:
b = b+1;
cout << b;
希望现在有意义。
答案 1 :(得分:0)
为什么b有两个不同的值
b
没有两个不同的值。 b
,a
以及其他所有内容,在任何给定时间始终都有一个值。它可能在不同的时间具有不同的值,但在给定的时间它总是只有一个值。
由于a
为3,因此:
b=a++;
将b
设置为3,因为在表达式中使用a
的值后,增量后操作会修改a
的值。
cout<<++b;
这输出4,因为预增量操作在表达式中使用之前修改b
的值。由于b
以3
开头,因此会增加到4,然后在表达式中使用。