2

我有以下程序:

int main() {
  int i;
  while (cin >> i) {
    cout << abs(i) << endl;
  }
  return 0;
}

(其中 abs 由 int abs(int val) 定义)

当我输入一个非整数数字时,例如-1.2,它将给出以下输出:

$ -1.2
1

我的问题是:为什么 while 身体会被执行?我认为只要我输入一个非整数值,条件就会失败,程序应该终止。谢谢!

4

2 回答 2

2

因为输入运算符读取-1, 并在点处停止。下一次循环时,输入运算符看到点并设置fail标志,终止循环。

于 2013-02-24T06:45:55.960 回答
2

您的程序只读取一个整数,仅此而已。如果您使用cin读取 int 值,则运算符将仅读取 int,因此使用小数将使其仅读取到点。例如,输入 -55.365 实际上只会发送 -55。

于 2013-02-24T06:50:38.033 回答