使用代码

    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的switch语句!

最佳答案

有道理,因为你的情况总是真实的。

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

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

将始终计算为true
你基本上是说“如果op不是-或者op不是*。。。做任何事”。
你可能想用&&代替。

关于c - C:字符逻辑运算符不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13800894/

10-13 00:53