[英]OR operator in C
我试图在C中制作计算器。我写了那段代码
#include <stdio.h>
int main()
{
char proc;
float x,y,z;
printf("Enter the proccess you need to do :\nA) +\nB) -\nC) *\nD) /\n>>> ");
scanf("%c", &proc);
if (proc !='A' || proc !='a' || proc !='B' || proc !='b' || proc !='C' || proc !='c' || proc !='D' || proc !='d' )
{
printf("enter a valid charecter.\n");
return 0;
}
else
printf("Enter your first number: ");
scanf("%f", &x);
printf("Enter your seconde number: ");
scanf("%f", &y);
//Start of IF statment
if (proc =='A' || proc == 'a')
{
z = x+y;
printf("The sum is %.2f:\n",z);
}
else if (proc =='B' || proc == 'b')
{
z = x-y;
printf("The sum is %.2f:\n",z);
}
else if (proc =='B' || proc == 'b')
{
z = x*y;
printf("The sum is %.2f:\n",z);
}
else if (proc =='B' || proc == 'b')
{
z = x/y;
printf("The sum is %.2f:\n",z);
}
else printf("Enter a valid charecter.\n");
//End of IF statment
return 0;
}
但是当我尝试运行它并尝试例如A时它会显示“输入一个有效的字符”。 我需要它,如果我键入这些字符A,B,C,D也小写。 我是以错误的方式做到的吗?
是的你没想到它。 想想逻辑:
proc !='A' || proc !='a' || ...
以你放入'A'的例子为例。 然后你评价:
false || true || ...
true
|| 任何事都是真的,所以你有问题。 你想要&&
。
虽然评论中已有正确答案,但请告诉您正确的做法。
首先,您正在检查许多不必要的条件,您可以简单地执行以下操作:
// Check here about this function : https://stackoverflow.com/questions/2661766/c-convert-a-mixed-case-string-to-all-lower-case
proc = tolower(proc);
然后只需检查4个条件,即检查4 * 2,8个条件
// Using '&&' here will solve your problem.
if(proc != 'a' && proc != 'b' && proc != 'c' && proc != 'd')
如果您可以学习开关盒,也可以钻下整个程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.