在DeV C++中循环不按预期运行

在DeV C++中循环不按预期运行,c++,C++,我试图让while循环接受循环条件,直到使用下面的代码输入值1或2 while((choice != 1) || (choice != 2)) { cout << "\nEnter 1 to read a file, Enter 2 to enter your own values: "; cin >> choice; } 我记得最好,这对我以前起作用,所以我不确定为什么它现在不起作用,我想这可能是因为我是如何根据屏幕截图链接安装De

我试图让while循环接受循环条件,直到使用下面的代码输入值1或2

while((choice != 1) || (choice != 2))
{
    cout << "\nEnter 1 to read a file, Enter 2 to enter your own values: ";
    cin >> choice;
}

我记得最好,这对我以前起作用,所以我不确定为什么它现在不起作用,我想这可能是因为我是如何根据屏幕截图链接安装DeV C++的。我模模糊糊地记得必须在我的旧电脑上解决这个问题,但不记得如何准确地解决它。任何解释我在代码中出错的地方或如何修复DEV C++错误都会得到极大的帮助。

< P>如果选择等于1,则你的条件之一是错误的,而另一个仍然是真的。当选择为2时,情况类似。将OR语句更改为AND,仅当用户输入一个或两个以外的内容时才会循环。

循环的问题在于此条件:

(choice != 1) || (choice != 2)
对于每个值都保证为真。如果选择为1,则析取的第二个子句为真;如果是2,则第一个子句为true;如果是任何其他数字,这两个都是真的。如果其中任何子句在析取中为真,则整个条件为真。这意味着你的情况永远是真实的

您需要的是以下条款的连词:

(choice != 1) && (choice != 2)
           // ^^

这样,循环条件只有在两个子句都为true时才为true,这需要选择1或2以外的值。

提示:请同时指定一个不是1或不是2的数字。| |应该是&-,当数字不是1或2时,您要重复该数字,但是你却创造了一个永远不能为假的条件,因为每个数字不是1,不是2,或者bothIt也不是1980,所以这些类型的接口很烦人。尝试编写使用argv的程序,读取命令行参数。给你的命令起名/myprog read或./myprog update比显示选项菜单更易于使用。这是否回答了您的问题?感谢解释的帮助,我认为如果值不是1或2,它会循环,而不是当值不是1或2时循环,基本上误解了循环的功能。