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,也可以深入了解整个程序。