C:char逻辑运算符不工作

时间:2012-12-10 12:23:40

标签: c io logical-operators

使用代码

    sscanf(argv[1], "%d", &num1);
    sscanf(argv[2], "%c", &op);
    sscanf(argv[3], "%d", &num2);

        if ((op != '-')||(op != '*')||(op != '/')||(op != '+'))
    {
        puts("Error:");
        printf("'%c' is not a valid operator", op);
        return 0;
    }

编译好。

但是,对任何输入都不起作用。例如,当输入为4 + 7

控制台打印:

  

错误:

     

'+'不是有效的运算符

编辑:没有此错误检查代码,程序的其余部分正常运行,包括基于op的开关语句!

3 个答案:

答案 0 :(得分:4)

有道理,因为你的情况总是如此。

 (op != '-')||(op != '*')||(op != '/')||(op != '+')

甚至

 (op != '-')||(op != '*')

将始终评估为true

您基本上是说“如果op不是- op不是* ......请做任何事情。”< / p>

您可能打算使用&&代替。

答案 1 :(得分:3)

你有一个逻辑问题。您应该使用AND(&amp;&amp;)

更改OR(||)运算符

答案 2 :(得分:2)

你想要

   if ((op != '-')&&(op != '*')&&(op != '/')&&(op != '+'))