gpt4 book ai didi

c - 枚举对象设置为不等于其各自枚举常量的值

转载 作者:太空狗 更新时间:2023-10-29 17:20:35 26 4
gpt4 key购买 nike

如果枚举对象设置的值不等于其各自的任何枚举常量,则枚举对象具有什么值?

考虑以下代码:

enum foobar{
FOO = 1,
BAR = 5
};

enum foobar baz = 5;
enum foobar qux = 42;

变量 baz 被设置为整数值 5,而变量 qux 被设置为整数值 42.

我怀疑变量 baz 将保存值 BAR,但我不确定变量 qux。没有为枚举常量分配值 42,那么当 enum foobar 变量设置为这样的值时会发生什么?

C99 标准是否明确说明了结果?

最佳答案

变量 qux 不会保存任何 enum 的值。在编译器选择表示 foobar 的基础类型中,它的值将等于 42,这是实现定义的。当值为 42 时,这不会出现问题,但当常量不适合编译器为您的枚举选择的类型时,这可能会成为问题。

编译器允许赋值 enum 常量以外的值的原因之一是支持“标志”枚举,当常量期望在按位运算中组合时:

enum foobar {
foo = 1
, bar = 2
, baz = 4
} test = (foo | baz);

上面的变量 test 保存着 5 的值,它不对应于任何 enum 常量。

关于c - 枚举对象设置为不等于其各自枚举常量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24683156/

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