2013-02-24 2 views
2

У меня следующая программа:почему выполняется пока тело?

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

(где абс определяется Int абс (интермедиат Val))

, когда я ввод не-INT число, например, -1.2, это даст следующий результат:

$ -1.2 
1 

Мой вопрос: почему в то время как тело выполняется? Я думаю, что условие должно завершиться неудачно, как только я введу значение non-int, и программа должна завершиться. Благодаря!

+0

Что такое cin, count, endl, и на каком языке это? – Wasafa1

+1

@ Wasafa1 Тег в нижней части вопроса (над ссылками) говорит C++. –

ответ

2

Поскольку оператор ввода считывает -1 и останавливается в точке. В следующий раз через цикл оператор ввода видит точку и устанавливает флаг fail, завершая цикл.

2

Ваша программа считывает только одно целое число, не более того. Если вы используете cin, чтобы прочитать значение int, оператор будет читать только int, поэтому использование десятичной дроби сделает его только чтением до точки. Например, вход в -55.365 действительно будет отправлять только -55.

Смежные вопросы