- 浏览: 1586703 次
- 性别:
- 来自: 吉林
文章分类
- 全部博客 (624)
- C/C++ (33)
- Java (181)
- 网络相关 (7)
- 我爱篮球 (3)
- 也爱足球 (4)
- 杂谈 (1)
- 系统架构 (3)
- Web Service (14)
- Framework (3)
- 系统命令 (8)
- 管理平台相关 (8)
- 其它 (35)
- Websphere (1)
- Struts2 (24)
- Hibernate (16)
- Spring (23)
- javascript (20)
- jquery (23)
- html/css/div (28)
- 数据库 (40)
- JavaWeb (27)
- 设计模式 (2)
- 文档编写 (3)
- SVN (5)
- Ant (1)
- Maven (13)
- 软件项目管理 (8)
- AOP (1)
- kindeditor (1)
- JSON (2)
- Servlt/JSP (4)
- WordXML (2)
- XML (12)
- 面试相关 (7)
- Tomcat (11)
- 性能与调优 (29)
- 职业发展 (2)
- 操作系统 (7)
- AJAX (2)
- DWR (1)
- Eclipse (12)
- 持续集成 (3)
- 批处理命令 (1)
- Mozilla Rhino (2)
- 新鲜技术 (18)
- Apache mina (2)
- 底层技术 (18)
- Linux (22)
- 新鲜技术,IT历史 (1)
- 敏捷开发 (1)
- 版本控制 (5)
- 较火技术 (7)
- 集群 (2)
- Web前端 (13)
- 报表工具 (3)
- 网站架构 (5)
- 大数据 (8)
- 分布式存储 (5)
- 云计算 (8)
- TCP/IP协议 (1)
- 负载均衡 (3)
- 硬件 (1)
- 表现层技术 (3)
- Velocity (3)
- jvm (6)
- 并发编程 (10)
- hadoop (8)
- 数据结构和算法 (12)
- 计算机原理 (1)
- 测试驱动开发-TDD (3)
- 开发技巧 (1)
- 分词器 (1)
- 项目构建工具 (2)
- JMX (4)
- RMI (1)
- 测试技术 (22)
- 网络完全 (1)
- Git (4)
- apache开源包 (4)
- Java常用 (1)
- mock (2)
- OSGi (2)
- MongoDB (1)
- JBPM (1)
- Storm (3)
- mysql (2)
- telnet (1)
- 正则表达式 (1)
- bootstrap (4)
- Apache ActiveMQ (1)
- redis (9)
- Nginx (2)
- rsync+inotify文件同步 (2)
- testng (1)
- 原型设计工具 (1)
- 工程能力 (1)
- 风险控制 (3)
- ibatis (1)
- 分布式 (4)
- 安全技术 (1)
- 计算机基础 (4)
- 消息中间件 (1)
- UML (2)
最新评论
-
u012236967:
java命令执行jar包(里面的main函数)的方式(包括依赖其它的jar包问题) -
世界尽头没有你:
Selenium自动化测试从入门到精通(Java版)百度网盘地 ...
自动化测试工具 Selenium WebDriver 入门教程(针对主流浏览器) -
小小西芹菜:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
dwr实现Reverse Ajax推送技术的三种方式 -
hellozhouqiao:
楼主,请教一点问题.现在我们需要在excel 的页脚里面加上图 ...
FreeMaker + xml 导出word(处理目录,图片和页眉页脚问题) -
乱在长安:
使用Timer会有各种各样的问题好嘛?!书上推荐使用Sched ...
DelayQueue (ScheduledThreadPoolExecutor调度的实现)
C++编程语言作为一种功能强大的语言,对开发人员来说作用是非常大的。不过,其中有很多应用方式还需要我们去不断的探讨,不断从中汲取经验来达到熟练的程度。下面我们就先为大家详细介绍一下有关C++枚举类型的相关概念。
1、枚举enum的用途浅例
写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, rainy等等。更常见的,打开一个文件可能有三种状态:input, output和append. 典型做法是,对应定义3个常数,即:
- const int input = 1;
- const int output = 2;
- const int append = 3;
然后,调用以下函数:
- bool open_file(string file_name, int open_mode);
比如,
- open_file("Phenix_and_the_Crane", append);
这种做法比较简单,但存在许多缺点,主要的一点就是无法限制传递给open_file函数的第2个参数的取值范围,只要传递int类型的值都是合法的。(当然,这样的情况下的应对措施就是在open_file函数内部判断第二个参数的取值,只有在1,2,3范围内才处理。)
使用枚举能在一定程度上减轻这种尴尬(注1),它不但能实现类似于之前定义三个常量的功能,还能够将这三个值组合起来成为独一无二的组。例如:
- enum open_modes {input = 1, output, append};
以上定义了open_modes为C++枚举类型enumeration type。每一个命名了的枚举都是唯一的类型,是一个类型标示器type specifier。例如,我们可以重新写一个open_file函数:
- bool open_file(string file_name, open_modes om);
在open_modes枚举中,input, output, append称为枚举子enumerator, 它们限定了open_modes定义的对象的取值范围。这个时候,调用open_file函数和之前的方法还是一模一样:
- open_file("Phenix_and_the_Crane", append);
但是,如果传递给open_file的第二个参数不是open_modes枚举类型值的话(注1),那么编译器就会识别出错误;就算该参数取值等价于input, output, append中的某个,
也一样会出错哦!例如:
- open_file("Phenix_and_the_Crane", 1);
2、C++枚举类型的定义
一个枚举是一个类型,可以保存一组由用户刻画的值。定义之类,枚举的使用很像一个整数类型。枚举的定义具有以下形式,即以关键词enum开头,接着一个可选的枚举名,下来是由大括号{}包含着一个由逗号分隔的枚举子列表enumerators list:
- enum [enumeration name] {enumerator1[=value1], enumerator2[=value2], ...};
- 如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始, 顺 次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后, 其后的成员按依次 加1的规则确定其值。 例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。
- enum string{x1, x2, x3, x4}x; 当定义改变成: enum string { x1, x2=0, x3=50, x4, }x; 则x1=0, x2=0, x3=50, x4=51 注意: 1. 枚举中每个成员(标识符)结束符是",", 不是";", 最后一个成员可省略 ","。 2. 初始化时可以赋负数, 以后的标识符仍依次加1。 3. 枚举变量只能取枚举说明结构中的某个标识符常量。 例如: enum string { x1=5, x2, x3, x4, }; enum strig x=x3; 此时, 枚举变量x实际上是7。 enum 关键字在c中用的是比较多的,它常用来定义标记整型常量,你去看许多操作系统的源代码,
- 都有用这个关键字来一次定义许多标记整型常量,其实它相当于定义一个整型常量的表,考试.大提示方
- 便应用时查找。当然他的大部分功能都可以被宏定义代替,不过毕竟enum关键字定义的东东是支持类
- 型检查的,可以用编译器来发现一些错误(enum定义的只能是整型的常量表) <!--分页-->
发表评论
-
COM(Component Object Model)组件介绍
2013-01-15 17:38 1515COM component(COM组件)是微软公司为了计算机 ... -
scanf的用法
2012-05-31 23:37 1463scanf()函数的用法和实 ... -
定义计算变量相对于结构体偏移量的宏
2012-05-30 22:42 2817#include <stdio.h> #incl ... -
C语言一些有用的宏定义
2012-05-30 22:36 1765C语言宏定义技巧(常用宏定义) 写好C语 ... -
C语言const
2012-05-30 14:35 1259原文地址:http://hi.baidu. ... -
C语言void指针
2012-05-29 09:50 13591.概述 本文将对void关键字的深刻含义进行解说,并 ... -
C语言中#line 宏说明
2012-05-28 09:38 1844c语言里有个很少用到的宏 #line,这个宏通常是和__LIN ... -
C语言中宏的一些特别用法
2012-05-28 09:36 1724转载 C语言中如何使用宏C(和C++)中的宏(Macro)属 ... -
C语言编译执行的全过程
2012-05-28 09:13 1236编译,编译程序读取源程序(字符流),对之进行词法和语法的分 ... -
C++新型头文件与名称空间的作用
2012-05-25 09:06 18691.20 新型头文件与名字 ... -
程序在内存中运行的奥秘
2010-07-01 12:18 1842内存管理是操作系统的核心功能,无论对于开发者还是系统管理员内存 ... -
堆和栈的区别
2010-06-29 10:56 1648栈是随函数被调用时分 ... -
原码,补码,反码(针对byte(128) = -128的问题)
2010-06-25 16:40 4137int a = 128; byte b = (byte)a; ... -
链表常见笔试题
2010-06-25 11:22 3464链表的一些常见笔试面试问题总结及代码 ... -
C与C++中struct的区别,以及C++中struct与Class的区别
2010-06-25 10:44 4194C中struct只可以放成员变量,没有访问权限限制,外部可以访 ... -
C++中的inline用法总结
2010-05-26 22:26 18808inline函数的作用 ... -
C++ Template 中的typename、class关键字区别
2010-05-19 19:27 3321在c++Template中很多地 ... -
C++与Java比较(转)
2010-04-30 23:02 4459“作为一名C++程序员,我们早已掌握了面向对象程序设计的基本概 ... -
几款常见C++编译器的比较
2010-04-30 22:58 5725另外,就我个人的一点点经验来看,vs 2005中的C++编译器 ... -
C/C++编译过程理解
2010-04-30 22:31 2740标准C和C++将编译过程定义为9个阶段(Phases of T ...
相关推荐
(1)强作用域,强类型枚举成员的名称不会被输出到其父作用域,所以不同枚举类型定义同名枚举成员编译不会报重定义错误。 (2)转换限制,强类型枚举成员的值不可以与整型发生隐式相互转换。 (3)可以指定底层...
在C++中,数据类型分为基本数据类型、枚举类型、结构体和联合体,以及C++特有的类等。下面我们将详细探讨C++中的基本数据类型。 首先,C++的基本数据类型包括布尔型、整型、字符型、浮点型以及宽字符型: 1. 布尔...
在C++中,枚举类型是一种用户自定义的类型,它可以由开发者定义出不同的枚举值。例如, enums EType1 { e1 = CHAR_MAX };enum EType2 { e2 = SHRT_MAX };enum EType3 { e3 = INT_MAX };这些枚举类型的大小是多少呢?...
- **数据类型**:C++中的基本数据类型(如int、char、float等)、自定义数据类型(如struct和class)以及枚举(enum)的使用。 - **运算符**:包括算术运算符、比较运算符、逻辑运算符、赋值运算符、位运算符等,...
在某些特定上下文中,如枚举类型具有特定的语义或用途时,直接用`int`替换枚举可能会导致代码难以理解或引发错误。因此,应谨慎使用这种转换,并尽可能保持类型的一致性。 总之,枚举在C++中提供了定义和管理一组...
枚举在C++中分为两类:枚举类型(enum class)和旧式枚举(enum)。本篇主要探讨的是旧式枚举,因为它在早期的C++版本中广泛使用,并且在某些场景下仍然存在。 1. 枚举的类型: 在C++中,枚举实际上是一种整型的...
在C++中,枚举类型需要正确的语法格式,否则编译器将报告错误。 31. Enumeration constant syntax error 枚举常数语法错误 在C++中,枚举常数需要正确的语法格式,否则编译器将报告错误。 32. Error directive :...
- 枚举类型的大小并不总是等于定义它的基础类型。在示例中,`Enum1`、`Enum2`和`Enum3`分别可能占用1个、2个和4个字节,这取决于枚举值的实际大小以及编译器如何对齐内存。 3. **隐式类型转换**: - C++中,枚举...
C++语言提供了丰富的数据类型,包括基本类型如整型、浮点型、字符型等,以及由基本类型组合而成的复合类型,如数组、结构体、联合体和枚举等。同时还有引用类型和指针类型,它们用于实现更复杂的数据结构和功能。 2...
10. **C++11及更高版本的新特性**:随着C++标准的更新,许多新特性如lambda表达式、右值引用、auto关键字、强类型枚举等被引入。书籍可能会涵盖这些现代C++特性,以帮助读者跟上最新的编程实践。 通过对以上知识点...
枚举类型定义完成后,需要创建枚举变量才能使用。这可以通过先定义类型再定义变量,或者在定义类型的同时定义变量来实现,如下所示: ```cpp // 先定义类型,再定义变量 enum weekday {Sun, Mon, Tue, Wed, Thu, Fri...
10. **C++11及以后的更新**:C++语言不断演进,C++11引入了许多新特性,如右值引用、Lambda表达式、auto关键字、强类型枚举等,C++14和C++17继续增强和完善了这些功能。 通过《C++编程实例详解》中的实例,学习者将...
- 枚举类型在C++中用于定义一组命名的整数常量。题目中的`enum Number{one=1, two=2, four=4, eight=8};`定义了一个名为`Number`的枚举类型,其中包含了四个成员:`one`, `two`, `four`, 和 `eight`,它们分别等于1...