0

使用代码

    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 语句。

4

3 回答 3

4

有道理,因为你的条件总是正确的。

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

甚至

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

将始终评估为true.

你基本上是在说“如果op不是- op不是*......做任何事情”。

您可能打算&&改用。

于 2012-12-10T12:25:26.003 回答
3

你有一个逻辑问题。您应该使用 AND (&&) 更改 OR (||) 运算符

于 2012-12-10T12:27:42.757 回答
2

你要

   if ((op != '-')&&(op != '*')&&(op != '/')&&(op != '+'))
于 2012-12-10T12:26:29.143 回答