为什么我的while循环无论我输入什么都会一直触发?

时间:2017-02-20 22:01:22

标签: c++

我是初学者,我正在尝试使用while循环进行分配,以便计算通过大门的票数以及日志是多少彩票。我以为我编码正确,但后来我遇到了运行时错误并尝试将每个错误单独输出然后逐个1让它工作但我甚至无法触发我的while循环以触发用户输入的任何内容任何帮助都会受到赞赏,我完全迷失了,我知道这是初学者。

 #include <iostream>

using namespace std;

int main()
{


char answer;


cout << "start counting tickets? (y/n)" << endl;
cin >> answer;

while (answer = 'y')
{
    cout << "ok" << endl; 
    cin >> answer;
}



return 0;
}

1 个答案:

答案 0 :(得分:2)

您正在使用while循环条件中的赋值。这是初学者常犯的错误。您需要使用比较运算符。

使用

while (answer == 'y')

而不是

while (answer = 'y')

使用赋值将始终求值为“true”,因为C / C ++中的赋值计算为赋值,除0之外的任何值都被视为“true”。为了避免这种错误,一些开发人员养成了将常量放在左边的习惯。例如:

while ('y' == answer)

这样,如果您错误地使用赋值运算符,编译器将生成错误。同样的原则也适用于“if”陈述。