我似乎無法理解此操作。 以下代碼的輸出是什麼? 我試圖解釋爲什麼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,但我無法得到我的頭。
我似乎無法理解此操作。 以下代碼的輸出是什麼? 我試圖解釋爲什麼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,但我無法得到我的頭。
但我不能讓我的頭周圍。
當發生這種情況,你可以儘量簡化報表/表達式。
由於使用遞增運算符的,
b = a++;
等同於:
b = a;
a = a+1;
由於使用預先遞增運算符的,
cout<<++b;
等同於:
b = b+1;
cout << b;
希望這是有道理的現在。
是的,這是有道理的。謝謝!! – dontbadick
爲什麼B有兩個不同的值
b
沒有兩個不同的值。 b
,a
,以及其他一切,在任何給定的時間總是有一個值。它可能在不同的時間有不同的值,但在給定的時間它總是隻有一個值。
由於a
是3,則:
b=a++;
b
設置到3,因爲a
值在表達式中使用後的後增量操作修改的a
值。
cout<<++b;
此輸出4,因爲它是在表達式中使用之前,預先遞增操作修改的b
值。由於b
開始時與3
,它就會被遞增到4,然後在表達式中使用。
就打破它在以下列方式,它的各個部分: 'INT A = 3; // a當前是3' 'int b = 2; // b目前是2' 'b = a ++; //後增加運算符。指定a到b然後遞增a(a = 4 now)' 'cout << ++ b; //預增加運算符。將b增加1,然後打印結果(4)' – NooGuy