概述
一、enum的取值范围
C++标准规定超出枚举类型表示范围的赋值结果是undefined的。
enum的取值范围和 int 的范围并不是直接一致的。计算enum的取值范围,可以按如下方式操作:
1、不考虑负数:获取enum中的最大值,根据这个最大值所具有的位数,可以计算enum的表示范围。
举个例子:enum test{ a=2, b=4 };最大值为4,二进制表示为100,3bits,因为3bits表示的范围是0~7,所以test的取值范围就是[0, 7];
2、考虑负数情况。负数情况下,需要多一位的符号位,其本质还是一样的。
比如:enum test{ a=-2, b=4 }; 绝对值最大值为4,需要3bits,由于4不是负数,还需要增加一位符号位,4bits,其表示范围就是1000~0111,所以test的取值范围就是[-8, 7]。
如果是enum test{ a=-4, b= }; 则仅仅3bits就足够了,因为 100 就是 -4。
二、enum的size
C++标准规定,enum的size只要能够容纳定义时刻的所有bits就可以了,具体取什么值,由编译器决定。比如enum test{ a=2, b=4 };仅需要3bits,那么可以取1B,也可以取4B,由编译器自己决定。VC中是固定取4B空间。
最后
以上就是痴情香氛为你收集整理的enum 的范围与size的全部内容,希望文章能够帮你解决enum 的范围与size所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复