如何正确实现和访问各种自定义运算符?

问题描述 投票:0回答:1

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

这是我到目前为止在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

谢谢。

c++ visual-studio enumeration
1个回答
1
投票

[当您尝试使用cout<<op;时,输出是与“(”]相对应的ASCII值>

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

根据Doc

类型

枚举器的基本类型;所有枚举数都相同基础类型。可以是任何整数类型。

就我而言,您不能直接枚举符号。

© www.soinside.com 2019 - 2024. All rights reserved.