尽管条件得到满足,循环重复

时间:2013-01-28 00:40:37

标签: c while-loop conditional-statements

我希望我的while循环在用户输入1或2时停止。如果输入任何其他内容则应该重复。我尝试在变量名称前加上一个感叹号并使用等号。我尝试使用单个或运算符。

petId变量得到了正确的数字 - 我看到NSLog()为" Dog"和" Cat"。尽管输入了1或2,为什么循环仍在循环?

int petId;
while(petId != 1 || petId!=2)
        {
            NSLog(@"%d",petId);
            NSLog(@"Would you like to create a dog or a cat?\n1.Dog 2.Cat");
            //Scan user input
            scanf("%i",&petId);
            if(petId == 1)
            {
                NSLog(@"Dog");
            }
            else if(petId==2)
            {
                NSLog(@"Cat");
            }
            else
            {
                NSLog(@"Invalid Entry");
            }
        }

4 个答案:

答案 0 :(得分:4)

好的,你会自己踢。

||表示OR。如果EITHER表达式为真:(petId != 1)(petId != 2),则循环将继续。

  • 如果petID == 1petID != 2为真。
  • 如果petID == 2petID != 1为真。
  • 如果petID == 3则两者都是真的。

您正在寻找&&

while (exp1 && exp2) { ...

只要petId不是1而不是2,循环就会继续。

答案 1 :(得分:1)

如果输入为2,则不是1.

如果您的输入为1,那么它不是2.

因此你的(petId!= 1 || petId!= 2)条件总是如此。

替换为(petId!= 1&& petId!= 2),你就完成了!

答案 2 :(得分:0)

你可能在布尔运算符中犯了一个错误: 替换

while(petId != 1 || petId!=2)

使用

while(petId != 1 && petId!=2)

答案 3 :(得分:0)

如果petId != 1 || petId!=2不等于1 它不等于2,则表达式petId为真,并且因为它不能同时为1和2时间这个表达总是正确的......

尝试petId != 1 && petId != 2