我正在使用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循环会执行。
答案 0 :(得分:2)
(std::cin >> userIn)
将为!= 0
,而不是输入为0
。
要同时检查两者,您可以执行while ( (std::cint >> userIn) && userIn )
。这将首先确保输入成功,然后数字实际上是非零。
答案 1 :(得分:0)
习惯于引用像这样的页面对你有好处 http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/
它描述了运算符&gt;&gt;()函数的返回值,它是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);