[英]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.