c中的枚举运算符(+;,-,*,/)
我想创建一个包含运算(+、-/、*)的枚举。 诸如此类c中的枚举运算符(+;,-,*,/),c,enums,C,Enums,我想创建一个包含运算(+、-/、*)的枚举。 诸如此类 enum运算符{plus=“+”,减号=“-”,multy=“*”,div=“/”} 或者类似上面的东西 我想将其与字符串进行比较,例如(当input=“+”): 任何想法都会有帮助 提前感谢。枚举是int,字符常量也是C中的int,因此您可以这样做: enum operators { plus = '+', minus = '-', mult = '*', div = '/' }; 如果您有一个名为input的字符串(字符数组),您可以
enum运算符{plus=“+”,减号=“-”,multy=“*”,div=“/”}代码>
或者类似上面的东西
我想将其与字符串进行比较,例如(当input=“+”):
任何想法都会有帮助
提前感谢。枚举
是int,字符常量也是C中的int,因此您可以这样做:
enum operators { plus = '+', minus = '-', mult = '*', div = '/' };
如果您有一个名为input
的字符串(字符数组),您可以这样做测试:
if (input[0] == plus)
printf("ok");
您更可能在switch语句中使用它:
switch (input[0]) {
case plus:
// do something
break;
case minus:
// do something
break;
等等。enum
是整数类型的别致名称<代码>“+”
是字符串,而不是整数
使用:
或者,您可以简单地使用:
enum operators { plus, minus, multy, div };
值将是不同的,但编号将从0开始。您使用的符号(即op.plus)对于枚举不正确。它将用于
struct
表示法
但是,您可以这样做:(注意,我没有使用字符串,我使用的是
char
和int
,它们更容易稍后集成到switch()
语句中。)
#包括
enum运算符{
加号=“+”,//加法==43
减号='-',//减号==45
mult='*',//mult==42
divi='/',//div==47
};
内部主(空)
{
INTA,b;
char op;
printf(“输入\“+\”、\“-\”、\“*\”或\“/\”\n”);
scanf(“%c”和&op);
printf(“输入两个由空格分隔的整数值,\n”);
scanf(“%d%d”、&a和&b);
开关(op){
案例补充:
printf(“%d+%d==%d\n”,a,b,a+b);
打破
减号:
printf(“%d-%d==%d\n”,a,b,a-b);
打破
案例多:
printf(“%d*%d==%d\n”,a,b,a*b);
打破
案件组一:
printf(“%d/%d==%d\n”,a、b、a/b);
打破
}
getchar();
getchar();
返回0;
}
请注意,因为这是整数运算,所以像5/2==2这样的东西并不有趣,但我如何将它与类似于枚举运算符op的字符串进行比较;扫描频率(“%s”,输入);如果(strcmp(input,op.plus)==0{printf(“\nok”);当input=“+”;@csgk-你能读入
字符吗?),如果是这样,那么你可以简单地测试你的输入值=='+'
(等等)。您的strcmp想法也有效,正如您所描述的。这完全取决于您。我将其作为字符读取,不适用于上述代码。我得到编译器错误…?input='+'无效您将得到编译器警告have尝试一下,当然输入==“+”不起作用。@csgk-如果你想使用字符串,那么你必须到处使用它们,也就是说,不要用枚举来定义操作类型,而是用一个包含字符串成员的结构(例如char add[2]={“+”};等等),然后当你scanf(“%s”,input)
时,你的strcmp(input,add);
将==0。(如果用户输入一个“+”+1来指出“+”和“+”之间的差异。我无法计算我被发现的次数。阅读您的编辑,回答如下。
enum operators { plus = '+', minus = '-', multy = '*', div = '/' };
enum operators { plus, minus, multy, div };
enum operator {
plus = '+', //add == 43
minus = '-', //minus == 45
mult = '*', //mult == 42
divi = '/', //div == 47
};
int main(void)
{
int a, b;
char op;
printf("enter \"+\", \"-\", \"*\" or \"/\"\n");
scanf("%c", &op);
printf("enter 2 integer values separated by a space, <return>\n");
scanf("%d%d", &a, &b);
switch(op) {
case plus:
printf("%d + %d == %d\n", a, b, a+b);
break;
case minus:
printf("%d - %d == %d\n", a, b, a-b);
break;
case mult:
printf("%d * %d == %d\n", a, b, a*b);
break;
case divi:
printf("%d / %d == %d\n", a, b, a/b);
break;
}
getchar();
getchar();
return 0;
}