我正在创建一组枚举值,但我需要每个枚举值为64位宽.如果我没记错的话,枚举通常与int的大小相同; 但是我认为我读过某个地方(至少在GCC中),编译器可以使枚举成为保持其值所需的任何宽度.那么,有可能有一个64位宽的枚举?
sizeof(enum)== sizeof(int),总是吗?
通常的做法是什么?如果我必须通过网络传输这些返回类型,并且必须在另一端完成某些处理,那么您更喜欢枚举/ #define/const ints.
编辑 - 只是检查网络,因为编译器不象征性地链接宏,人们如何调试,比较整数值与头文件?
来自答案 - 我在下面添加这一行,因为我需要澄清 -
"因此它是实现定义的,而sizeof(枚举)可能等于sizeof(char),即1."
每个C和C++标准是否允许sizeof数字类型不是 2的幂?
已知以下约束:
16 <= CHAR_BIT * sizeof(int) <= CHAR_BIT * sizeof(long)32 <= CHAR_BIT * sizeof(long) <= CHAR_BIT * sizeof(long long) 2 <= sizeof(int) && 4 <= sizeof(long)这是否意味着这sizeof(int) == 3 && sizeof(long) == 5是一种有效的行为?
如果是 - 是否有任何已知的编译器/架构以类似的方式运行?
我怎么知道枚举的大小Days?它会等于7*4(sizeof(int)) = 28??
在printf()这里给我的价值4,怎样才可以解释呢?
enum Days
{
saturday,
sunday ,
monday ,
tuesday,
wednesday,
thursday,
friday
} TheDay;
printf("%d", sizeof(enum Days));
Run Code Online (Sandbox Code Playgroud)
我们也可以使用它作为(枚举天)(0),它类似于整数数组.如果大小等于4则可以解释这种数组行为的类型?