编译器在编译阶段会有警告,测试了枚举类型的最大值,下面来测试下枚举类型的最小值
enum test{m1=INT_MIN}; printf("%d\n%d\n", m1, INT_MIN);
运行结果:
上面的代码没有问题,下面来测试一下越界的赋值
enum test{m1=INT_MIN-1}; printf("%d\n%d\n", m1, INT_MIN);
和上面相同,编译器也会有警告
为什么“枚举类型描述的是一组整型值的集合”其实不太妥当?上面这句话很容易让读者以为enum类型和int类型是等价的,好像可以把int型的数据直接赋值给enum变量,实际上是不行的,需要进行强制类型转换,C语言提供了一种称为“枚举”的类型,其中一个枚举常量的占的字节数为4个字节,恰好和int类型的变量占的字节数相同,假设把这些枚举常量说明为整型,字符型或其他类型显然是不妥当的,因为枚举类型是一种基本数据类型,而不是一种构造类型,它不能再分解为什么基本类型。
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx