gpt4 book ai didi

c - 为什么两个不同的枚举枚举常量可以有相同的整数值?

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

我知道如果我像这样定义一个枚举工作日:

enum weekday {
MON,
TUE,
WED,
THU,
FRI,
};

然后,默认情况下,MON 在内部等于 0,TUE 为 1,WED 为 2...

但是如果我这样定义它:

enum weekday {
MON,
TUE = 0,
WED,
THU,
FRI,
};

然后 MONTUE 都将获得 0 的值。

系统如何在内部区分 MON 和 TUE?我的意思是,如果我这样声明:

enum weekday today = 0;

那么今天是 MON 还是 TUE?或者,从哲学上讲,两者都是?

最佳答案

C 枚举是“真正的”整数——不仅因为它们碰巧以这种方式实现,而且因为标准定义 枚举类型具有整数值。所以 today 的值“真的”是 0。所发生的一切只是您为值 0 创建了两个不同的名称。

那么我想“今天是星期一还是星期二”的答案是"is";-)

该语言不会阻止您,因为有时枚举对同一值具有多个名称很有用。例如:

enum compression_method {
COMP_NONE = 0,
COMP_LOW = 1,
COMP_HIGH = 2,
COMP_BEST = 2,
COMP_FASTEST = 0,
};

关于c - 为什么两个不同的枚举枚举常量可以有相同的整数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11412516/

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