读书人

enum枚举变量占几个bit?在16位32位64位

发布时间: 2012-03-28 15:40:03 作者: rapoo

enum枚举变量占几个bit?在16位32位64位机下是否不同?
因为VC中bool和BOOL一个是枚举定义的,一个是int型3态变量,后来在freescale的68HC12的IDE中看到Bool的定义用枚举定义的:
typedef enum BOOL
{
FALSE = 0,
TRUE = (enum BOOL)-1
} Bool;
而所带ANIC C的lib中是这样定义的
typedef int Bool;
#define TRUE 1
#define FALSE 0
请教枚举变量在不同的系统中是多少bit呢?

[解决办法]
用sizeof()运算符测试
[解决办法]
我理解的:

如果有typedef,定义的变量一般是int型的4个字节
如果没有定义typedef类型的话,相当于一个宏定义。在编译的时候就已经把enum中的值全部替换掉了。
[解决办法]
是C语言中的, 还是C++语言中的?


[解决办法]
哦,抱歉,刚才看错了.

===.
"请教枚举变量在不同的系统中是多少bit呢 "
====

这个从标准上说, 是由实现定义的, 也就是说不同系统不同编译器可能都不同.

但标准C/C++中也有一个限定, 就是enum必须兼容于整型(char, signed int, unsigned int).
就是说enum的大小绝不能超过int. (所以sizeof(enum) > sizeof(int) 是可以确定是错误的).
但具体是多少, 只要能表达你写在enum里的变量, 实现(编译器,系统)想采用多大采用多大.

因此,你无法假定enum类型的大小, 所以在需要的时候 得像二楼说的那样用 sizeof(your_enum_type)代替.


读书人网 >C语言

热点推荐