C语言中while循环中的条件问题。 ||不适合吗?

问题描述 投票:0回答:2

我想知道为什么0或-20没有结束循环。希望你能帮助我,因为我被卡住了:(

#include <stdio.h>

int main()
{
   int days;
   printf("Please insert number of days: ");
   scanf("%d", &days);

   while(days != 0 || days != -20)
    {
      printf("%d days are %d week(s) and %d day(s). (0 or - 20 to quit)",
               days, days/7, days%7 );
      scanf("%d", &days);
    }
   return 0;
}
c while-loop multiple-conditions
2个回答
1
投票

days != 0 || days != -20将始终为true。因为无论days的值是多少,它都不会是0 也不会是-20(或也不是)。

如果要在任一情况下中断,请使用逻辑运算符。

while(days != 0 && days != -20)
{
}

0
投票

更改此

while(days != 0 || days != -20)

while(days != 0 && days != -20)

要获得您期望的行为。

但是也可以表示为:

while(days <= 0 && days >= -20)

提供允许您停留在循环中的日期范围,以及循环将退出的范围。

© www.soinside.com 2019 - 2024. All rights reserved.