2016-12-16 51 views
-3

我似乎无法理解此操作。 以下代码的输出是什么? 我试图解释为什么b的两个不同值中的一个为:b = 1 + 2,另一为:b = 2,由于++应等于一个= 1 + a,然后将COUT是要求++ B,其中一个它应该等于,b = 2-1还是b = 3-1?C++操作太混乱了?

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

我知道这个问题的答案是4,但我无法得到我的头。

+0

就打破它在以下列方式,它的各个部分: 'INT A = 3; // a当前是3' 'int b = 2; // b目前是2' 'b = a ++; //后增加运算符。指定a到b然后递增a(a = 4 now)' 'cout << ++ b; //预增加运算符。将b增加1,然后打印结果(4)' – NooGuy

回答

4

但我不能让我的头周围。

当发生这种情况,你可以尽量简化报表/表达式。


由于使用递增运算符的,

b = a++; 

等同于:

b = a; 
a = a+1; 

由于使用预先递增运算符的,

cout<<++b; 

等同于:

b = b+1; 
cout << b; 

希望这是有道理的现在。

+1

是的,这是有道理的。谢谢!! – dontbadick

0

为什么B有两个不同的值

b没有两个不同的值。 b,a,以及其他一切,在任何给定的时间总是有一个值。它可能在不同的时间有不同的值,但在给定的时间它总是只有一个值。

由于a是3,则:

b=a++; 

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

cout<<++b; 

此输出4,因为它是在表达式中使用之前,预先递增操作修改的b值。由于b开始时与3,它就会被递增到4,然后在表达式中使用。