#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char array[2];
printf("Enter two of < or > or =");
scanf("%s",array);
if ((2 array[0] 3)&&(4 array[1] 3)){
printf("It works\n");
}
else printf("Yup! the code still works\n");
}
以上简化代码旨在获取输入&lt;&gt;来自用户并尝试使用它来比较两个数字,但编译器抛出错误&#39;因为它不接受array [0]为&gt;。请提供问题的解决方案。
答案 0 :(得分:2)
您不能仅使用char作为运算符,但您可以使用基于输入的if else序列来比较值。
实施例
if (array[0] = '>') some_variable = 2>3;
else if (array[0] = '<') some_variable = 3>2;
else if (array[0] = '=') some_variable = 3==2;
如果您愿意,也可以使用switch语句。
然后,您可以为数组中的第二个元素重复类似的序列。
答案 1 :(得分:1)
您不能使用char变量作为运算符的替代。您必须将变量与特定char进行比较并返回比较。
int num1;
int num2;
bool comp[2];
switch(array[0]) {
case '>':
comp[0] = (num1 > num2);
printf("%a > %b\n", num1, num2);
break;
case '<':
comp[0] = (num1 < num2);
printf("%a < %b\n", num1, num2);
break;
case '=':
comp[0] = (num1 == num2);
printf("%a = %b\n", num1, num2);
break;
default:
comp[0] = false;
printf("Invalid character %c\n", array[0]);
break;
}
switch(array[1]) {
... //Switch over the other element of array
}
if(comp[0] && comp[1]) {
printf("It works\n");
}
如果您希望用单词替换运算符,可以使用宏:
#define LT <
bool x = (1 LT 0); //Sets x to false