返回介绍

3.10.4 数值表达式中的枚举类型

发布于 2020-09-09 22:55:44 字数 737 浏览 1132 评论 0 收藏 0

枚举变量的元素可以使用在数值表达式中。表达式中使用的值是与枚举值相关的数值。例如:

typedef enum {red, green, blue, yellow, white, black} Colors;
Colors col;
integer a, b;
a = blue * 3;
col = yellow;
b = col + green;

在前面的声明中,blue的值为2。上面的例子将a赋值为6(2*3),将b赋值为4(3+1)。

在表达式中使用的枚举变量或标识符自动地转换成枚举声明的基类型(或者显式地,或者使用int作为缺省类型)。从一个表达式而不是相同的枚举类型对枚举变量赋值要求强制的类型转换。当强制转换到枚举类型的时候,表达式会转换到它的基本类型而不会检查值的有效性(除非使用动态强制类型转换,见3.15节的描述)。

typedef enum {Red, Green, Blue} Colors;
typedef enum {Mo, Tu, We, Th, Fr, Sa, Su} Week;
Colors C;
Week W;
int I;

C = Colors'(C+1); // C被强制转换成一个整数,然后加1,接着转换回Colors类型

C = C + 1; C++; C+=2; C=I; // 非法。因为它们都是没有强制类型转换的表达式复制。

I = C + W; // 有效。C和W被自动地强制转换成int类型。

SystemVerilog包含了一组特定的方法对枚举类型的值进行操作。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文