2017-06-14 67 views
-1
#include <iostream> 
int main() 
{ 
    int sum = 0, value = 0; 
    while (std::cin >> value) 
     sum += value; 
    std::cout << sum << std::endl; 
    return 0; 
} 

當我給在終端1和2 3 Q輸入,然後將其輸出爲6。但是,當我給1 2 3 4.0,則輸出爲10C++在while語句中

爲什麼這個程序的打印10而不是6?

+0

歡迎堆棧溢出。請花些時間閱讀[The Tour](http://stackoverflow.com/tour),並參閱[幫助中心](http://stackoverflow.com/help/asking)中的資料,瞭解您可以在這裏問。 –

+1

_「爲什麼這個程序打印10不是6?」_因爲'1 2 3 4'的總和是'10'? –

+0

解決這些問題的正確工具是您的調試器。在*堆棧溢出問題之前,您應該逐行執行您的代碼。如需更多幫助,請閱讀[如何調試小程序(由Eric Lippert撰寫)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。至少,你應該[編輯]你的問題,以包含一個[Minimal,Complete,and Verifiable](http://stackoverflow.com/help/mcve)例子來重現你的問題,以及你在調試器中所做的觀察。 –

回答

1

操作員>>該類型int,直到遇到一個非數字讀取數字。

所以條件

while (std::cin >> value) 

當緩存中遇到點計算爲false。

1 2 3 4有效數字。第一個無效符號是'。'。

0

您輸入1,然後(space) 2,然後(space) 3,然後(space) 4,然後.0

當你做std::cin >> value,它忽略任何空白,然後嘗試讀取儘可能多的數字越好,如果沒有數字失敗。 4是一個有效的整數,這就是讀取的內容。 .0不是那麼循環在那一點結束。

1 + 2 + 3 + 4爲10。