2016-11-21 63 views
0

所以我玩弄了cin.get()來更徹底地理解它。調用cin.get()兩次:意外的結果?

char x[20]; 
cout << "Enter a name: "; 
cin >> x; 
cout << cin.get(); 

如果我輸入「鮑勃·史密斯」,它輸出32 - 空間的ASCII數字 - 這是我期待,因爲它的輸入流之後的字符。

char x[20]; 
cout << "Enter a name: "; 
cin >> x; 
cout << cin.get() << " " << cin.get() 

但是,這會輸出「83 32」,這讓我感到困惑。爲什麼它會在空間之前反轉輸出「S」的順序?

回答

2

如果更改cout << cin.get() << " " << cin.get()下面的代碼:

cout << cin.get(); 
cout << " " << cin.get(); 

它打印32 83,它不會逆轉。

這是因爲如果將兩個條件放在一行中,C++可能不會按順序對它們進行評估。