为什么跳过我的while循环?

时间:2015-07-14 00:45:37

标签: c++ while-loop

程序跳过我的while循环并结束。超级沮丧。我甚至在while循环之前将AnsCheck的值设置为false。没运气。该程序不执行While循环中的任何操作。这是相关的代码:

bool AnsCheck;
AnsCheck = false;
while (AnsCheck = false)
{
    getline(cin, Ans1);
    if (Ans1 != "T" || Ans1 != "F")
    {
        cout << "Please Enter T for true or F for False" << endl;
        cout << "answer not T or not F" << endl; // debugging
    }
    else
    {
        AnsCheck = true;
        cout << "changed bool to true" << endl;
    }
}

3 个答案:

答案 0 :(得分:6)

您需要使用比较运算符来表示相等==,而不是赋值运算符=

while (AnsCheck == false) {
    // ...
}

另外,正如您在本答案下面的评论中提到的那样,if语句中的条件永远不会被评估为true。要比较字符串,您应该使用strcmp,当两个c字符串的内容相等时返回0。有关详细信息,请参阅this reference

if (strcmp(Ans1, "T") != 0 && strcmp(Ans1, "F") != 0) {
    // ...
}

答案 1 :(得分:0)

  

(AnsCheck = false)

您需要以其他顺序编写此比较,以便 编译器可以生成错误。

(false = AnsCheck)

学习是一个艰难的过渡。检查您的编码标准。

答案 2 :(得分:0)

与其他人已经说过的一样,使用比较运算符&#34; ==&#34;而不是告诉编译器你通过使用&#34; =&#34;来分配。你会没事的。

改变这个:

while (AnsCheck = false)

对此:

while (AnsCheck == false)

希望这会有所帮助。干杯!