相关疑难解决方法(0)

C中枚举的大小是多少?

我正在创建一组枚举值,但我需要每个枚举值为64位宽.如果我没记错的话,枚举通常与int的大小相同; 但是我认为我读过某个地方(至少在GCC中),编译器可以使枚举成为保持其值所需的任何宽度.那么,有可能有一个64位宽的枚举?

c enums

138
推荐指数
3
解决办法
17万
查看次数

sizeof(enum)== sizeof(int),总是吗?

sizeof(enum)== sizeof(int),总是吗?

  • 还是编译器依赖?
  • 这是错误的,因为编译器针对字长度(内存对齐)进行了优化,即y int是特定编译器上的字大小?如果我使用枚举,这是否意味着没有处理惩罚,因为它们将是字对齐的?
  • 如果我将所有返回代码放在枚举中是不是更好,因为我显然不担心它获得的值,只检查返回类型时的名称.如果是这种情况,#DEFINE会更好,因为它可以节省内存.

通常的做法是什么?如果我必须通过网络传输这些返回类型,并且必须在另一端完成某些处理,那么您更喜欢枚举/ #define/const ints.

编辑 - 只是检查网络,因为编译器不象征性地链接宏,人们如何调试,比较整数值与头文件?

来自答案 - 我在下面添加这一行,因为我需要澄清 -

"因此它是实现定义的,而sizeof(枚举)可能等于sizeof(char),即1."

  • 这是否意味着编译器检查枚举中的值范围,然后分配内存.我不这么认为,当然我不知道.有人可以解释一下"可能是什么".

c enums const c-preprocessor

58
推荐指数
4
解决办法
6万
查看次数

3字节int和5字节长?

每个C和C++标准是否允许sizeof数字类型不是 2的幂?

已知以下约束:

  • 16 <= CHAR_BIT * sizeof(int) <= CHAR_BIT * sizeof(long)
  • 32 <= CHAR_BIT * sizeof(long) <= CHAR_BIT * sizeof(long long)
  • 和其他十几个,在典型的8位字节架构上意味着 2 <= sizeof(int) && 4 <= sizeof(long)

这是否意味着这sizeof(int) == 3 && sizeof(long) == 5是一种有效的行为?

如果是 - 是否有任何已知的编译器/架构以类似的方式运行?

c c++ sizeof

13
推荐指数
2
解决办法
6126
查看次数

C语言中的sizeof枚举

我怎么知道枚举的大小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则可以解释这种数组行为的类型?

c

8
推荐指数
2
解决办法
2万
查看次数

标签 统计

c ×4

enums ×2

c++ ×1

c-preprocessor ×1

const ×1

sizeof ×1