犬的正常体温是多少°c:C中枚举的大小是多少 (eum-a1 manual)

我正在创建一组枚举值,但我需要每个枚举值是 64 位宽。

111

取自当前 C 标准(C99):http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf

6.7.2.2 枚举说明符
[...]
约束
定义枚举常量值的表达式应为整数常量表达式,其值可表示为 int。
[...]
每个枚举类型都应与 char 、有符号整数类型或无符号整数类型兼容。类型的选择是实现定义的,但应能够表示所有成员的值。

并不是说编译器在遵循标准方面有什么好处,而是本质上:如果你的枚举持有 INT 以外的任何东西,那么你就处于深度“不受支持的行为,可能会在一两年内回来咬你”的领域。

更新:C 标准(C11)的最新公开草案:http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf包含相同的条款。因此,这个答案仍然适用于 C11。

107

enum只能保证足够大以容纳int值。编译器可以根据定义的枚举常量自由选择使用的实际类型,因此如果它可以表示您定义的值,则可以选择较小的类型。如果您需要不适合int的枚举常量,则需要使用特定于编译器的扩展来执行此操作。

22

虽然前面的答案是正确的,但一些编译器可以选择打破标准并使用包含所有值的最小类型。

GCC的示例(the GCC Manual中的文档):

enum ord {
    FIRST = 1,
    SECOND,
    THIRD
} __attribute__ ((__packed__));
STATIC_ASSERT( sizeof(enum ord) == 1 )
0

只需将枚举的最后一个值设置为足够大的值,以使其成为您想要的枚举的大小,然后它应该是该大小:

enum value{a=0,b,c,d,e,f,g,h,i,j,l,m,n,last=0xFFFFFFFFFFFFFFFF};

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(429)
Cmd立刻关机命令:ShellExecute中的 cmd命令
上一篇
小程序表情包:Java卡中包、模块、小程序的定义(applets definition)
下一篇

相关推荐

  • comeandgetyourlove音乐爱就在你身边

    Come and Get Your Love是一首热门的歌曲,由美国摇滚乐队Redbone演唱。这首歌曲于1974年发行,被收录在他们的专辑《Wovoka》中。歌曲以放克曲风为主,旋律活泼,曲调悠扬,歌词朗朗上口,深受歌迷喜爱。…

    2023-06-29 07:47:31
    0 62 58
  • codeblocks无法编译运行:Codeblocks无法编译运行的解决方案

    codeblocks无法编译运行的原因可能有很多,下面以一段简单的C语言代码为例,来说明codeblocks无法编译运行的情况。…

    2023-07-11 08:01:55
    0 61 25
  • gitlab ci 自动化部署:使用 Gitlab CI 自动化部署提升开发效率

    GitLab CI 自动化部署是一种基于 GitLab CI/CD 的自动化部署方案,可以实现快速、可靠的部署流程。它将代码提交、构建、测试、部署等步骤集成在一起,使得开发者可以更加轻松地完成部署工作。下面是一个示例 .gitlab-ci.yml 文件,可以帮助你实现 GitLab CI 自动化部署:…

    2023-05-20 05:45:38
    0 10 70
  • xl和xe汽车cvt:探索XL和XE汽车的CVT技术优势

    XL和XE汽车CVT是一种变速器,它使用液力变矩器代替传统的机械变速器,以达到更高的效率。它的工作原理是,当发动机输出功率时,液力变矩器就会将这些功率转换为液压能量,然后将能量传递到变速器的输出轴上,从而实现变速。…

    2023-05-16 07:36:03
    0 36 58
  • js添加css:This is a Title

    使用js添加css可以通过修改元素的style属性来实现,具体代码如下:…

    2023-05-27 12:30:24
    0 62 69
  • css 字符间距:### 世界上最美的地方

    示例示例CSS 字符间距是指在文本中的字符之间添加间距,以增强文本的可读性。它可以使文本更容易阅读,也可以使文本看起来更美观。代码示例:…

    2023-04-15 08:45:29
    0 70 37
  • git 删除commit记录:回滚Git Commit记录

    git删除commit记录可以使用git reset命令。使用方法:…

    2023-07-07 04:31:44
    0 49 76
  • java实现tcp:使用Java实现TCP网络编程

    TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。它使用三次握手来建立可靠的连接,并且在数据传输期间可以检测丢失的数据包并重新发送。…

    2023-01-31 10:33:14
    0 55 11

发表评论

登录 后才能评论

评论列表(27条)