C 中的 OR 运算符
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 它显示 "enter a valid character." 如果我输入非这些字符 A,B,C,D 也是小写的,我需要它.
我做错了吗?
是的,你想错了。思考逻辑:
proc !='A' || proc !='a' || ...
以您输入 'A' 为例。然后你评估为:
false || true || ...
true
||任何事情都是真实的,所以你有问题。你想要 &&
.
虽然评论里已经有正确答案了,但我还是告诉你正确的做法吧
首先,你检查了很多不必要的条件,你可以简单地做这样的事情:
// Check here about this function :
proc = tolower(proc);
然后只检查4个条件,你检查的是4*2、8个条件
// Using '&&' here will solve your problem.
if(proc != 'a' && proc != 'b' && proc != 'c' && proc != 'd')
如果你能学会 switch case,也可以深入了解整个程序。
我正在尝试用 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 它显示 "enter a valid character." 如果我输入非这些字符 A,B,C,D 也是小写的,我需要它. 我做错了吗?
是的,你想错了。思考逻辑:
proc !='A' || proc !='a' || ...
以您输入 'A' 为例。然后你评估为:
false || true || ...
true
||任何事情都是真实的,所以你有问题。你想要 &&
.
虽然评论里已经有正确答案了,但我还是告诉你正确的做法吧
首先,你检查了很多不必要的条件,你可以简单地做这样的事情:
// Check here about this function :
proc = tolower(proc);
然后只检查4个条件,你检查的是4*2、8个条件
// Using '&&' here will solve your problem.
if(proc != 'a' && proc != 'b' && proc != 'c' && proc != 'd')
如果你能学会 switch case,也可以深入了解整个程序。