2013-02-24 32 views
2

我有以下程序:爲什麼一會兒屍體被執行?

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 body被執行?我認爲,只要我輸入一個非int值並且程序應該終止,條件就會失敗。謝謝!

+0

什麼是cin,count,endl,以及這是什麼語言? – Wasafa1 2013-02-24 06:46:08

+1

@ Wasafa1問題底部的標記(鏈接上方)表示C++。 – 2013-02-24 06:48:00

回答

2

因爲輸入操作符讀取-1,並停在點。下一次通過循環輸入操作員看到點並設置fail標誌,終止循環。

2

你的程序只讀取一個整數,不能超過這個數。如果使用cin來讀取一個int值,那麼運算符將僅讀取一個int值,因此使用小數點將使其只能讀取該點。例如,輸入-55.365,實際上只會發送-55。