使用代码
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的开关语句!
答案 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 != '+'))