如何正确实现和访问运算符的各种自定义枚举器

How to correctly implement and access various custom enumerators of operators?

本文关键字:自定义 枚举 运算符 何正确 实现 访问      更新时间:2023-10-16

我正在尝试创建几个枚举,以便根据优先级快速比较已解析的令牌。

这是我目前在main.cpp:中的代码

enum openParen0 : char { op = '(', ob = '[', oc = '{' };
enum closedParen0 : char { cp = ')', cb = ']', cc = '}' };
enum oper1 : char { plus = '+', minus = '-' };
enum oper2 : char { mult = '*', div = '/', mod = '%' };
openParen0 Open = op;
closedParen0 Closed = cp;
oper1 Operator1 = plus;
oper2 Operator2 = mult;
int problem, num1 = 5, num2 = 2;
problem = Open + num1 + Operator1 + num1 + Closed + Operator2 + num2;
cout << Open << num1 << " " << Operator1 << " " << num1 << Closed << " " << Operator2 << " " << num2 << " =" << endl;
cout << problem;

我只是想知道如何修改我的代码,以便正确地输出基于枚举的计算。我是这个概念的新手,所以我只是想了解它

这是我得到的代码:

(5 + 5) * 2 =
178

显然,我期待的是:

(5 + 5) * 2 =
20

谢谢。

当您尝试使用cout<<op;时,输出是对应于"("的ASCII值

Type char是一个整数类型,通常包含基本执行字符集的成员——默认情况下,它是Microsoft C++中的ASCII。

根据文件:

类型

枚举器的基本类型;所有枚举器都相同底层类型。可以是任何积分类型。

就我而言,你不能直接列举符号。