【发布时间】:2021-01-26 14:48:50
【问题描述】:
因为我知道enum 的每个元素都有自己的整数值,所以我尝试了这个:
enum Foo {
Red = 0,
Blue = 1
};
int main(void) {
enum Foo bar = 2;
return 0;
}
而且它...有效。我进一步观察,我认为它与int 具有相同的最小和最大限制(我在INT_MAX 之后开始体验UB)。到那时,enum 不比一组#defines 更好吗?不过,我也很可能在这里错了。
【问题讨论】:
-
如果你以完全错误的方式使用它,几乎任何东西都是不安全的
-
一般来说,“安全”对于 C 来说是一个非常相对的术语。
-
@mkrieger1 和 @underscore_d 您的链接非常有用,我可以看到尽管存在问题,
enums 仍然很重要,所以谢谢。 -
我不像
char s[10]; s[13]='x';那样不安全,这是否使数组不安全? -
@klutt 是的,这是真的。我想这一切最终都取决于程序员在某种程度上不是愚蠢的。