【发布时间】:2014-10-03 13:03:49
【问题描述】:
标准规定枚举类型是char、signed 和unsigned 之间的整数类型。
但是int 进入 32 位机器应该是 4 字节,进入 64 位机器应该是 8 字节。
那么为什么我的 GCC 进入 64 位机器返回 4 作为这个枚举的sizeof?
enum color
{
RED,
GREEN,
BLUE
};
size_t t = sizeof (enum color); // here 4
【问题讨论】:
-
sizeof(int)在你的机器上不是 4 吗? -
相关:type of enums 和 size of int
-
在所有常见的 64 位 ABI 上,
int是 32 位。 -
int的大小由编译器确定。不一定和机器的字长一样。 -
此处引用了 C 标准:stackoverflow.com/a/1113869/694576