簡體   English   中英

檢查While循環中的分配

[英]Assignment Within the Check of a While Loop

我正在使用while循環嘗試以下基本求和程序:

#include <iostream>
using std::cin;
using std::cout;


int main(){

int userIn;
int runningSum =0;

while((std::cin >> userIn) != 0){
   if(userIn == 0) std::cout << "Should never execute";
   runningSum += userIn;
}
return runningSum;
}

即使用戶輸入0,我也很難理解為什么while循環會執行。

如果輸入成功,則(std::cin >> userIn)將是!= 0 ,如果輸入為0則不是。

要檢查兩者,您可以執行while ( (std::cint >> userIn) && userIn ) 這將首先確保輸入成功,然后該數字實際上是非零。

習慣於引用http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/之類的頁面對你有好處

它描述了operator >>()函數的返回值,它是istream(cin)對象本身。 這意味着

while((std::cin >> userIn) != 0)

不會做你期望它做的事情,循環實際上永遠不會被打破。

你真正想要的是什么

std::cin >> userIn;
do {
   if(userIn == 0) std::cout << "Should never execute";
   runningSum += userIn;
   std::cin >> userIn;
} while (userIn != -1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM