gpt4 book ai didi

c++ - 为什么这个 while 循环没有在下面的代码中结束?

转载 作者:行者123 更新时间:2023-12-01 14:35:22 25 4
gpt4 key购买 nike

抱歉,这段代码看起来很傻,但我只想了解其中的逻辑。

我试图在用户输入 quit 作为输入时结束程序。

我写了 name != "quit"&& sname != "quit" 作为 while 条件,所以如果其中任何一个是 quit,循环就会结束 (正确的?)。

但是当我将 quit 写为 name 时,它仍然等待 sname 输入,如果我也为 sname 写 quit 输入,然后它终于结束了。但是当我用&&写条件后第一次看到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;
}

输出:

enter your name and surname
>>name=John
>>surname=Wick
>>name=quit
>>surname=

最佳答案

好问题!这与 while 循环的工作方式有关。

在 C++ 中,while 循环的工作方式如下:

  • 首先,它检查 while 循环中括号语句中的条件是否为真。
  • 如果是,它会执行 while 循环的整个主体,然后跳回到第一步。

换句话说,while 循环不会在条件为假时立即停止运行。相反,一旦到达重新评估条件并发现条件为假的点,它就会停止运行。

这就是为什么在这里使用 &&|| 并不重要。在再次检查条件之前,循环不会退出,并且在当前循环迭代完成运行之前不会发生这种情况。

这为您提供了一些有关操作的选项。

  1. 您可以在读取第一个字符串后在 while 循环中添加显式检查以确认该字符串不是 "quit",只执行如果需要,循环的其余部分。

  2. 您可以在循环中间添加一个break 语句来告诉循环停止运行。这可以结合选项 (1) 来完成。

希望这对您有所帮助!

关于c++ - 为什么这个 while 循环没有在下面的代码中结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62028941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com