两次调用cin.get():意外的结果?

时间:2016-11-21 03:55:13

标签: c++ cin

所以我正在玩cin.get()来尝试更彻底地理解它。

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”的顺序?

1 个答案:

答案 0 :(得分:2)

如果您将cout << cin.get() << " " << cin.get()更改为以下代码:

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

打印32 83,但不会反转。

这是因为如果你在一行中放入两个条件,C ++可能不会按顺序对它们进行评估。