2016-11-21 12 views
0

私はもっと徹底的に理解しようとするためにcin.get()で遊んでいました。cin.get()を2回呼び出す:予期しない結果?

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

私が「Bob Smith」と入力すると、入力ストリームの後の文字であると予想されていた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を、印刷します。

これは、2つの条件を1つの行に記述すると、C++はそれらを順番に評価しない可能性があるからです。

関連する問題