-1
這裏有什麼區別? 我認爲這兩個版本應該是平等的,但顯然他們不是。 你能解釋第一個是如何工作的嗎?爲什麼它打印222而不是122?cout如何工作? (C++)
#include <iostream>
using namespace std;
int main() {
int a = 1;
/* #1: prints 222
cout << a << (a = 2) << a << endl;
*/
/* #2: prints 122
cout << a;
cout << (a = 2);
cout << a << endl;
*/
return 0;
}
閱讀順序點。 –
您正在將'a'分配給2來修改該值。 ostream在輸出之前評估這些值。 – Poriferous
@Poriferous是對的。讓我再解釋一下。編譯器將讀取每行並修改值,然後它將與結果一起工作。在你的代碼編譯器中讀取一行<<(a = 2)<< a;這裏是編譯器讀取行,並且您正在更改值a = 2,則完整行中沒有任何更改。之後編譯器將打印結果。所以a被修改爲2?那麼結果將是222。 – UnKnown