繁体   English   中英

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时它会显示“输入一个有效的字符”。 我需要它,如果我键入这些字符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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM