使用代码
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/