【发布时间】:2019-08-08 20:40:24
【问题描述】:
我尝试在 do-while 语句中使用 OR 逻辑运算符,但由于某种原因它不起作用。
它可以不使用 OR 逻辑运算符(仅使用一个语句),否则不行。
int main()
{
char ansr;
do
{
printf("What do you want to do?\n");
printf("A = Add Employee\nR = Remove Employee\nE = Exit\n");
scanf(" %c", &ansr);
}while(ansr != 'E'||ansr != 'e');
return 0;
}
每当我写 'E' 或 'e' 时,我都希望程序退出 while 循环,但由于某种原因,它会继续执行 do-while 语句。
【问题讨论】:
-
条件
x != A || x != B对每个不相等的A和B都为真。你想要&&而不是||。 -
或者(和等效地)修改逻辑否定的范围:
!(ansr == 'E' || ansr == 'e')。 -
如果
ansr等于E,它一定不等于e。解决这个问题的最简单方法是使用toupper()或tolower()和while ( toupper( ansr ) != 'E' )之类的东西。 -
一个技巧是养成大声朗读表达的习惯(或至少在你的脑海中):“当答案不是'E'或答案不是'e'时,循环”。等等,这听起来不对,肯定应该说“答案不是'E'并且答案不是'e'”。
-
(另外,学习一些基本的布尔代数和德摩根定律对程序员来说是个好东西。)
标签: c logical-operators