Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否可以为循环设置多个条件?_C++_Loops_Do While - Fatal编程技术网

C++ 是否可以为循环设置多个条件?

C++ 是否可以为循环设置多个条件?,c++,loops,do-while,C++,Loops,Do While,是否可以为循环设置多个条件?在本例中,特别是do…while循环。我试图回顾一些我从未练习过的旧内容,因为我天真地认为阅读示例代码已经足够好了,这样我可以获得一些经验,但我所尝试的一切都不起作用。它要么结束无限循环,要么只考虑一个条件,并保持与另一个循环。提前谢谢你的帮助 需要记住的一个关键概念是,输入变量一次只能有一个值。对于您的代码,您似乎希望: 如果输入值不是1,则继续循环,并且 如果输入值不是2,则继续循环, 在任何其他情况下,终止循环 要继续循环上述两种情况,可以组合逻辑运算符来实现这

是否可以为循环设置多个条件?在本例中,特别是do…while循环。我试图回顾一些我从未练习过的旧内容,因为我天真地认为阅读示例代码已经足够好了,这样我可以获得一些经验,但我所尝试的一切都不起作用。它要么结束无限循环,要么只考虑一个条件,并保持与另一个循环。提前谢谢你的帮助


需要记住的一个关键概念是,输入变量一次只能有一个值。对于您的代码,您似乎希望:

如果输入值不是1,则继续循环,并且 如果输入值不是2,则继续循环, 在任何其他情况下,终止循环 要继续循环上述两种情况,可以组合逻辑运算符来实现这一点

具体来说,您可以使用逻辑运算符!=和&&也就是说:

输入既不是1也不是2时继续循环

也就是说:

当输入不是1且不是2时继续循环

这可以通过如下更新代码中的循环条件来实现:

do {
    cin>>input;
    switch(input)
    {
    case 1:
        {
            cout<<"OK"<<endl;
            break;
        }
    case 2:
        {
            cout<<"what"<<endl;
            break;
        }
    default:
        {
            cout<<"INVALID INPUT\n"<<endl;
            break;
        }
    }

// Only allow the loop to continue if input is something other than 1 
// or 2, ie not 1 and not 2
} while(input!=1 && input!=2);

您可以使用计算结果为true/false的任何表达式创建循环条件,对可以在其中进行的比较数量没有硬性限制

但是,您的代码正在使用“或”门检查同一变量的两个不同值,该门将始终返回true,因为一个变量只能包含一个值。如果输入为1,则不可能为2,如果输入为2,则不可能为1,因此表达式将始终为真,这是一个无限循环


也许你想用&&“and”和“gate”来代替| |。

我想你在这里需要的是和语句“&&”来代替或“| |”。例如,输入1时,条件输入!=2为真,因此循环将继续。使用和语句输入!=1&&input!=2,一旦输入为1或2,循环将取消。但我很困惑,如果您不希望循环进行不确定的迭代,那么循环的意义何在?

input=1 | |输入=2始终为真。输入总是不同于1或不同于2。让我们看看:如果是0,那么两者都是。如果它是1,那么它与2不同。如果是2,那么它与1不同。您可能想要&,而不是| |。输入!=1&&input!=此外,为了防御,请考虑初始化int输入=0;好吧,那就解决了。。我现在觉得自己很笨,哈哈,我想我也需要重新考虑一下条件——非常感谢,这是一个很大的帮助。在发布问题的几秒钟内,我就想测试几年前在一个毫无价值的脚本中学到的一些知识,不管怎样,我很快就会删除这个脚本——我自己的测试失败了,哈哈。谢谢你,这绝对是我想要的答案。我不得不说,我已经喜欢这个社区了。谢谢你,我一提出问题就得到了回答,并对我是如何和为什么搞砸的进行了充分的解释。再一次感谢你们的帮助,这里的每个人都对我表示欢迎,如果你们觉得有帮助的话,请考虑回答这个问题:
do {
    cin>>input;
    switch(input)
    {
    case 1:
        {
            cout<<"OK"<<endl;
            break;
        }
    case 2:
        {
            cout<<"what"<<endl;
            break;
        }
    default:
        {
            cout<<"INVALID INPUT\n"<<endl;
            break;
        }
    }

// Only allow the loop to continue if input is something other than 1 
// or 2, ie not 1 and not 2
} while(input!=1 && input!=2);