2017-02-20 98 views
-4

我是一名初学者,我正在尝试使用while循环来完成一项任务,以便计算有多少张门票通过大门,以及如何记录它的颜色。我以为我编码正确,但然后我得到运行时错误,并试图单个每个错误,然后逐个1得到它的工作,但我甚至不能让我的while循环不只触发用户放入任何东西。任何帮助将不胜感激,我完全失去了,我知道这是非常初学者。为什么我的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; 
} 
+5

你可能是指'while(answer =='y')'。留意你的编译器警告。如果它没有警告你,升级你的编译器。 – WhiZTiM

+1

while(answer ='y')表示将“y”赋值给变量“answer”。 “答案”的值是非零的,这就是为什么它是真实的。因为ascii表中'y'的数值不是零。 – Michael

+0

所以我应该把什么呢? – xburdg

回答

2

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

使用

while (answer == 'y') 

,而不是

while (answer = 'y') 

使用除0以外的任务,因为在C/C分配++评估的价值分配将始终评估为“真”,和任何被视为“真正”。为了避免这个错误,一些开发人员养成了一个不变的习惯。例如:

while ('y' == answer) 

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

+1

你可能想提一下为什么这个评估是真实的,对于一个黄金星来考虑这个结果是否对平台使用的编码敏感。以及为什么有些帅哥把常数放在左手边。 – Bathsheba

相关问题