频道栏目
读书频道 > web开发 > .NET > Visual C++ .NET程序设计教程(第2版)
3.2.3 枚举常量的运算
2012-11-26 14:48:04     我来说两句
收藏   我要投稿
本书以Visual C++ .NET为平台介绍程序设计方法。第一部分为教程,首先介绍Visual C++ .NET开发环境,然后介绍C++/CLI语言基础和C++/CLI面向对象编程基础,在这个基础上系统介绍Visual C++ .NET应用程序设计...  立即去当当网订购

由于在定义C++/CLI枚举时为枚举常量指定相应类型的值,因而可以对枚举常量进行相应的各种运算,如算术运算、关系运算等。下面分别讨论。

1. 算术运算

当枚举常量类型为除bool类型之外的整型时,可以使用++或--进行递增或递减运算。此时操作数一定是枚举类型的变量。例如:
NUMS  num = NUMS::Three;
++num;
Console::WriteLine(L"Num is {0}", num);

这里将num变量初始化为NUMS::Three,然后递增。需要说明的是,枚举变量的++或—运算并不验证其值是否是其中的枚举常量。例如,上述代码之前的NUMS枚举定义为:
enum class NUMS : char { One, Two, Three, Four, Five };

则最后1条语句的输出将是:
Num is Four

但NUMS枚举定义若为:
enum class NUMS : char { One, Two = 2, Three, Four = 10, Five };

则最后1条语句的输出将是:
Num is 4

除此之外,还可对枚举常量进行算术运算,如加、减、乘和除等。但是,不能直接将枚举常量与其他类型的常量进行运算,因为一般来说它们之间是不能自动转换的。为了让它们运行,必须通过类型强制转换。例如:
num = num + safe_cast<NUMS>(5);

但不能写成,
num = num + 5;  // 错误

2. 关系运算

枚举常量也可有关系运算,用来比较它们之间的大小,其结果将产生一个bool类型值。例如:
if ( num < NUMS::Five ) Console::WriteLine( L"num当前的值小于Five值" );
if ( num > NUMS::Five ) Console::WriteLine( L"num当前的值大于Five值" );
if ( num != NUMS::Five ) Console::WriteLine( L"num当前的值不等于Five值" );
if ( num == NUMS::Five ) Console::WriteLine( L"num当前的值等于Five值" );

事实上,C++/CLI枚举还可以有标识位以及位运算等操作。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.2.2 枚举常量的类型和值
下一篇:3.3 C++/CLI数组
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站