noo*_*bie 2 c++ loops while-loop
抱歉,这段代码看起来很傻,但我只是想了解一下逻辑。
当用户quit作为输入输入时,我试图结束程序。
我写name != "quit" && sname != "quit"为 while 条件,所以如果它们中的任何一个是quit,循环就会结束(对吗?)。
但是当我写quit为时name,它仍然等待sname输入,如果我也为sname输入写退出,那么它最终结束。但是,quit自从我用 编写条件以来,它不应该在第一次看到时结束&&吗?
此外,当我用||. 为什么会这样?
int main()
{
string name="",sname="";
cout << "enter your name and surname \n";
cout << ">>name=";
getline(cin,name);
cout << ">>surname=";
getline(cin,sname);
while (name != "quit" && sname != "quit")
{
cout << ">>name=";
getline(cin,name);
cout << ">>surname=";
getline(cin,sname);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
enter your name and surname
>>name=John
>>surname=Wick
>>name=quit
>>surname=
Run Code Online (Sandbox Code Playgroud)
好问题!这与while循环的工作方式有关。
在 C++ 中,while循环的工作方式如下:
while循环中带括号的语句中的条件是否为真。while循环体,然后跳回到第一步。换句话说,while只要条件为假,循环就不会停止运行。相反,一旦它到达重新评估条件并发现它是错误的点,它就会停止运行。
这就是为什么无论您是在使用&&还是||在此处都无关紧要。在再次检查条件之前循环不会退出,并且在当前循环迭代完成运行之前不会发生。
这为您提供了一些关于该做什么的选择。
您可以while在读取第一个字符串后向循环添加显式检查以确认该字符串 not "quit",仅在需要时才执行循环的其余部分。
您可以break在循环中间添加一条语句来告诉循环停止运行。这可以与选项 (1) 结合使用。
希望这可以帮助!