2016-12-16 123 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,然後在表達式中使用。