我有以下程序:
int main() {
int i;
while (cin >> i) {
cout << abs(i) << endl;
}
return 0;
}
(其中abs由int abs(int val)定义)
当我输入非int数字时,例如-1.2,它将给出以下输出:
$ -1.2
1
我的问题是:为什么while身体会被执行?我认为一旦输入非int值,条件应该失败,程序应该终止。谢谢!
答案 0 :(得分:2)
因为输入操作符读取-1
,并在点处停止。下一次循环时,输入操作符会看到点并设置fail
标志,终止循环。
答案 1 :(得分:2)
您的程序只读取一个整数,而不是更多。如果使用cin
读取int值,则运算符将只读取int,因此使用小数将使其仅读取到点。例如,输入-55.365实际上只会发送-55。