2016-11-21 5 views
0

Donc je jouais avec cin.get() pour essayer de mieux le comprendre.Appeler cin.get() deux fois: résultat inattendu?

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

Si j'entre « Bob Smith », il émet 32 ​​- le nombre ASCII pour l'espace - que je m'y attendais car il est le personnage après que le flux d'entrée.

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

Cependant, cette sortie "83 32", ce qui me rend confus. Pourquoi inverse-t-il l'ordre de sortie "S" avant l'espace?

Répondre

2

Si vous changez cout << cin.get() << " " << cin.get() au code suivant:

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

Il imprime 32 83, qui est pas inversée. Cela est dû au fait que si vous placez deux conditions sur une ligne, C++ risque de ne pas les évaluer dans l'ordre.