为什么while循环被跳过了

Why is my while loop getting skipped?

本文关键字:过了 循环 while 为什么      更新时间:2023-10-16

程序跳过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 << "answerswer not T or not F" << endl; // debugging
    }
    else
    {
        AnsCheck = true;
        cout << "changed bool to true" << endl;
    }
}

您需要使用比较运算符==来代替赋值运算符=

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

同样,正如你在这个答案下面的评论中提到的,if语句中的条件永远不会被评估为真。为了比较字符串,你应该使用strcmp,当两个c字符串的内容相等时,它返回0。

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

(AnsCheck = false)


您需要以另一种顺序编写这个比较,以便编译器可以生成一个错误。

(false = AnsCheck)

这是一个很难学习的过渡。检查你的编码标准

就像其他人已经说过的那样,使用比较操作符"=="而不是告诉编译器您正在使用"="进行赋值,您应该没问题。

改变:

while (AnsCheck = false)

:

while (AnsCheck == false)

希望这有帮助。干杯!