C 语言中 while 循环中的条件问题。 ||不适合?
Issue with conditions in while loop in C language. || doesn't fit?
我想知道为什么 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;
}
表达式:
days != 0 || days != -20
将永远为真,因为无论 days
的值是什么,它要么不等于 0
要么 它不会等于 -20
(也可能两者都等于)。
您希望表达式仅在 days
不等于任何一个时为真。也就是说,如果不等于 0
AND 则不等于 -20
.
因此只需将 OR 运算符 (||) 替换为 AND 运算符 (&&)。
while(days != 0 && days != -20)
{
}
只要两个子表达式都为真,循环就会重复。
改变这个
while(days != 0 || days != -20)//will never exit loop, because days cannot be
//both -20 and 0 at the same time.
到
while(days != 0 && days != -20) // if one or the other is false, loop will exit.
// i.e. True && False == 1 && 0 == false -> exit loop
获得您期望的行为。
但也可以表示为:
while(days <= 0 && days >= -20)
提供允许您保持循环的天数范围,以及退出循环的范围。
我想知道为什么 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;
}
表达式:
days != 0 || days != -20
将永远为真,因为无论 days
的值是什么,它要么不等于 0
要么 它不会等于 -20
(也可能两者都等于)。
您希望表达式仅在 days
不等于任何一个时为真。也就是说,如果不等于 0
AND 则不等于 -20
.
因此只需将 OR 运算符 (||) 替换为 AND 运算符 (&&)。
while(days != 0 && days != -20)
{
}
只要两个子表达式都为真,循环就会重复。
改变这个
while(days != 0 || days != -20)//will never exit loop, because days cannot be
//both -20 and 0 at the same time.
到
while(days != 0 && days != -20) // if one or the other is false, loop will exit.
// i.e. True && False == 1 && 0 == false -> exit loop
获得您期望的行为。
但也可以表示为:
while(days <= 0 && days >= -20)
提供允许您保持循环的天数范围,以及退出循环的范围。