`
- 浏览:
220352 次
- 性别:
- 来自:
北京
-
枚举声明:
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
相关推荐
《Intel Visual Fortran Compiler v10.1.014:深入解析与应用》 Intel Visual Fortran Compiler,简称IFC,是Intel公司为Fortran编程语言开发的一款强大的编译器,广泛应用于科学计算、高性能计算以及工程计算等...
南京科远DCS软件 NT6000 V4.2.014 Release Build 2021.1018 Setup
HttpWatch是一款强大的网页数据分析工具.集成在Internet Explorer工具栏.包括网页摘要.Cookies管理.缓存管理.消息头发送/接受.字符查询.POST 数据和目录管理功能.报告输出
Win10-HyperV-MSIX_Packaging_Tool_10182019.vhdx.zip.split.014
Delphi 著名控件包 Ehlib,支持 RAD Studio 10.3 RIO。
FTDIUN2K.INI 驱动
Embarcadero.ERStudio.v8.0.2.5991-Crack.rar,Embarcadero.ERStudio.v8.0.2.5991破解工具。请参考博文:http://blog.csdn.net/justdb/article/details/7723444
Disk:Partition : 2:2 Drive Letter : I:\ Last LFO Filesystem : Native FlagImplode : 0 FlagExplode : 10 Operation Details : Total size.........1162 MB copied..........118 MB remaining.......1044 ...
select2资源包。里面包含select2相关的js、css,解压后在dist目录下可找到。使用select2需要搭配jquery1.8以上版本。在这资源包的vendor文件夹下有jquery2.1的版本
opencv libiconv-2.dll
2013.3月最新nssock2.dll版本 对于xshell等软件打开错误,无法连接动态库有很好的解决 下载后,将该文件放到安装目录下 或者放到c盘的windows/System32目录下
DevComponents.DotNetBar2.dll 是一个由 DevComponents公司开发的.NET框架组件库,主要用于Windows Forms应用程序的界面设计。这个库包含了丰富的用户界面元素,可以帮助开发者快速构建出专业且美观的应用程序。本...
路由器工具tftp2.exe
内部版本 STM32 ST-LINK utility V4.2.0.0,STLinkUSBDriver.dll v5.0.3.0, ST-LINK_CLI.exe v3.2.0.0,Firmware Version v2.J29.S7。亲测OK
天使之翼2.nes天使之翼2.nes天使之翼2.nes
FastReport.Net+V2013.2.5+For+.Net4.0_附安装与破解_个人测试程序 1.首先安装FastReport.Net+V2013.2.5 For Net 4.0 的原始安装文件[FRNetDemo2010.msi] 2.将FastReport.Net+V2013.2.5+For+.Net4.0文件夹中的...
CodeSoft9 Activex控件lppx2.tlb使用说明,可以用VB,VC开发基于CS9的标签自动打印程序
自己编译的libssh2.dll,共享给大家!
第2 章程序的版式................................................................................................................8 2.1 空行 ................................................................
kmod-oracleasm-2.0.6.rh1-2.el6.x86_64.rpm