gpt4 book ai didi

c - 64 位机器上枚举的 sizeof

转载 作者:太空狗 更新时间:2023-10-29 15:35:38 28 4
gpt4 key购买 nike

标准规定枚举类型是介于charsignedunsigned 之间的整数类型。

但是 int 进入 32 位机器应该是 4 字节,进入 64 位机器应该是 8 字节。那么为什么我的 GCC 进入 64 位机器返回 4 作为这个枚举的 sizeof

enum color
{
RED,
GREEN,
BLUE
};

size_t t = sizeof (enum color); // here 4

最佳答案

OP:标准说枚举类型是charsignedunsigned 之间的整数类型。
A:接近,但不完全是。 See more @alk

Each enumerated type shall be compatible with char, a signed integer type, or an unsigned integer type. The choice of type is implementation-defined, but shall be capable of representing the values of all the members of the enumeration. C11dr §6.7.2.2 4

OP:但是 int 在 32 位机器上应该是 4 个字节,在 64 位机器上应该是 8 个字节。
答:不。虽然很常见,但处理器的字长和 int 通常是相同的,但 C 规范不要求这样做,而且许多实现不遵循这一点,尤其是在 64 位机器上使用 32-位整数。此外,8 位处理器(2014 年在嵌入式世界中仍然很常见)至少需要 16 位 int 才能兼容。

OP:为什么 64 位机器上的 GCC 返回 4 作为此枚举的 sizeof
A:这是编译器的选择。可能匹配 int 大小,这在 64 位编译器中很常见。

关于c - 64 位机器上枚举的 sizeof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26179480/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com