`
- 浏览:
224460 次
- 性别:
- 来自:
北京
-
枚举声明:
enum 枚举标记 枚举体
enum 枚举体
enum 枚举标记 :枚举基类型 枚举体
enum :枚举基类型 枚举体
枚举标记:
标识符
枚举基类型:
类型
枚举体:
;
{ 多个枚举成员 }
多个枚举成员:
单个枚举成员
单个枚举成员 ,
单个枚举成员 , 多个枚举成员
单个枚举成员:
标识符
标识符 = 赋值表达式
Type Identifier = AssignExpression 2.014
枚举声明被用来定义一组常量。 定义形式有两种:
1. 命名枚举——它有一个枚举标记。
2. 匿名枚举——它没有枚举标记。
14.1 命名枚举
命名枚举常被用来声明几个有关联的常量,并且使用一个统一的类型来组合它们。 多个枚
举成员 被声明在枚举标记的作用域内。 枚举标记 会声明出一个新的类型,而所有的那些
枚举成员 都属于该类型。
下面的例子就定义了一种新的类型 X ——它拥有值 X.A=0、X.B=1、X.C=2:
enum X { A, B, C } // 命名枚举
如果 枚举基类型 没有显示地设置,则它会被设置成 int 类型。
上面这句在2.014中被改成下面的:
If the EnumBaseType is not explicitly set, and the first EnumMember has an initializer, it is set to the type of that initializer. Otherwise, it defaults to type int. 2.014
命名枚举成员可以被隐式转换成它的 枚举基类型,不过 枚举基类型 不会被隐式转换成枚
举类型。
一个 枚举成员值 由初始化过程设定。 如果没有初始化过程,则它会被设定成前一个 枚举
成员 的值 + 1。如果它是第一个 枚举成员,那么它的值就为 0。
枚举必须至少拥有一个成员。
1.1 枚举默认的初始化过程
枚举类型的特性 .init 就是该枚举的第一个成员的值。 它也是枚举类型的默认初始化过
程。
enum X { A=3, B, C }
X x; // ax 被初始化为 3
1.2 枚举的特性
枚举特性仅对命令枚举才有效。
.init 第一个枚举成员的值
.min 枚举的最小值
.max 枚举的最大值
.sizeof 存储枚举值所需要的存储器大小
例如:
enum X { A=3, B, C }
X.min // 为 X.A
X.max // 为 X.C
X.sizeof // 等同于 int.sizeof
The EnumBaseType of named enums must support comparison in order to compute the .max and .min properties. 2.014
2 匿名枚举
如果不指定 enum 标识符,则枚举称为 匿名枚举,并且 多个枚举成员 在 枚举声明 出现
的作用域内被声明。没有新类型被创建;多个枚举成员 的类型是 枚举基类型。
枚举基类型 是枚举的基本类型。
它必须是整数类型。如果忽略,默认为 int。
2.014中上面这句被改成如下:
If omitted, the EnumMembers can have different types. Those types are given by the first of:
The Type, if present.
The type of the AssignExpression, if present.
The type of the previous EnumMember, if present.
int
enum { A, B, C } // 匿名枚举
定义了常量 A=0、B=1、C=2,所有类型都为 int。
枚举必须至少拥有一个成员。
一个 枚举成员值 由初始化过程设定。 如果没有初始化过程,则它会被设定成前一个 枚举
成员 的值 + 1。如果它是第一个 枚举成员,那么它的值就为 0。
enum { A, B = 5+7, C, D = 8+C, E }
设置 A=0、B=12、C=13、D=21 和 E=22,所有的类型都为 int。
enum : long { A = 3, B }
设置 A=3、B=4,所有类型都为 long。
2.014
enum : string
{
A = "hello",
B = "betty",
C // error, cannot add 1 to "betty"
}
enum
{
A = 1.2f, // A is 1.2f of type float
B, // B is 2.2f of type float
int C = 3, // C is 3 of type int
D // D is 4 of type int
}
Manifest Constants
If there is only one member of an anonymous enum, the { } can be omitted:
enum i = 4; // i is 4 of type int
enum long l = 3; // l is 3 of type long
Such declarations are not lvalues, meaning their address cannot be taken.
............
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在HttpWatch Pro v6.014版本中,用户可以享受到以下主要功能: 1. **实时性能监控**:在浏览网页时,HttpWatch会实时显示页面加载的各项详细指标,帮助开发者快速定位性能瓶颈。 2. **全面报告**:提供详细的性能...
实战大数据扩展视频.zip.014
DXperience-8.3.5.zip.014
MZ_T014.2-2010救灾被服第2部分棉大衣
datagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-...
cv2.pyd 包含 32位和64位 支持pyhton2.7.........................................................................................................................
nginx-1.18.0-2.el7.ngx.x86_64.rpm安装包(含有部署手册) nginx-1.18.0-2.el7.ngx.x86_64.rpm安装包(含有部署手册) nginx-1.18.0-2.el7.ngx.x86_64.rpm安装包(含有部署手册) nginx-1.18.0-2.el7.ngx.x86_64.rpm...
**libssh2.dll** 是一个动态链接库文件,主要用于实现SSH2协议的客户端和服务器端功能。SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。libssh2是一个开源项目,为C语言...
在本教程中,我们将深入探讨如何正确安装和使用Tidy2.dll。 首先,我们需要了解Notepad++。Notepad++是一款免费且开源的文本编辑器,尤其受到程序员的喜爱,因为它支持多种编程语言,并提供了语法高亮、代码折叠等...
slink固件下载STLinkV2.J16.S4.bin 适用于与STM32F103R8T6 首先我们焊接完的板子是不能用的,需要往里面下载固件。前提是你手头有一块好的ST-LinkV2下载器,不然就白搞了。(用Jlink也可下载) 使用STM32 ST-LINK ...
clickhouse-22.2.2.1-2.rpm离线安装包包含clickhouse-common-static-22.2.2.1-2.x86_64.rpm,clickhouse-client-22.2.2.1-2.noarch.rpm,clickhouse-server-22.2.2.1-2.noarch.rpm共3个离线安装rpm包。 安装: rpm -...
TouchWin编辑工具V2.C.6序列号
linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6....
AXMLPrinter2.S.jar 把反编译出来的layout布局文件解析成正常代码
**json.js** 和 **json2.js** 是两个JavaScript库,用于在浏览器环境中处理JSON数据。`json.js`可能是早期的一个JSON处理库,它提供了JSON的解析(`parse()`)和字符串化(`stringify()`)功能,使得在不支持JSON的...
C1.Win.C1FlexGrid.2 是一个专为Windows应用程序设计的强大网格控件,它提供了丰富的功能和灵活性,使得开发者可以轻松地在他们的应用中实现数据的显示和编辑。C1FlexGrid是一款由ComponentOne公司开发的专业级表格...
kernel-devel-3.10.0-693.5.2.el7.x86_64.rpm
libaio-devel-0.3.105-2.i386.rpm
apache 2.2.2 + PHP5.1.4 不能运行的解决办法. 解决方法: vcredist_x86.exe ...3.双击运行vcredist_x86.exe安装.(如果您的系统里已安装了 .NET framework 2.就可以省掉这一步) 完成!重启你的apache2.2。