gpt4 book ai didi

C : assign negative value to enum?

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

背景

我正在尝试将 -1 分配给枚举变量,如下所示:

typedef enum test {
first,
second,
}soc_ctr_type_t

soc_ctr_type_t ctype;

...

switch(type){
case 1:
ctype = first;
break;

case 2:
ctype = second;
break;

default:
ctype = -1;
}

如果 type 是默认大小写,ctype 应该变为 -1,但事实并非如此。当我用printf调试时,ctype是255。

问题

为什么ctype变成255而不是-1?

最佳答案

在枚举器列表中定义一个具有该值的枚举器,结果将是正确的:

typedef enum test {
minus_one = -1 ,
first,
second,
} soc_ctr_type_t;

你看到 255 的原因是因为编译器为这个枚举数选择了一个更窄的无符号类型,因为它只能看到它 firstsecond,它们有值 0、1。因此选择的类型是 unsigned char,因为它可以表示这两个值。
此类型将从 -1 换行到 255。

C 中的枚举数不是特殊类型,它们由整数类型表示,因此您可以为枚举数列表中不存在的枚举数赋值。

关于C : assign negative value to enum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38010642/

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