目录
枚举的定义
枚举的本质
枚举的使用
总结:
// 方法一:
enum season{Spring,Summer,Autumn,Winter};
enum season s;
// 方法二:
enum season{Spring,Summer,Autumn,Winter}s;
// 方法三:省略了枚举的类型名-->这样后面就不能使用enum season s这样的形式来定义枚举变量了,因为
// 定义的时候没有名字,enum s;直接这样定义是错误的。
enum {Spring,Summer,Autumn,Winter}s;
代码中使用三种方式定义了一个枚举变量s。
enum season{Spring,Summer,Autumn,Winter}s;
// 打印枚举类型所占的内存
printf("%d",sizeof(enum season)); // 4个字节
代码中打印了枚举类型所占字节数,会发现它和int类型所占的字节是一样的。
所以,枚举其实就是一个整数变量,只是将它类型化了,就会有更多的约束--使用起来更加的严格。
1. 关于枚举中的常量
enum season{Spring,Summer,Autumn,Winter}s;
0 1 2 3
枚举类型的定义,其实就是一堆常量,这些常量表示特定的含义(和使用宏定义类似),在枚举中的常量,如果没有特殊指定,第一个常量默认从0开始,后面的常量默认比前面的常量值大1.
enum season{Spring,Summer=2,Autumn,Winter=1}s;
也可以像上面一样指定,一些常量的值,
此时: Spring = 0(默认开始为0) , Summer = 2 ,Autumn = 3(默认上一个常量值+1) ,Winter = 1;
注意: 虽然我们可以指定值给常量,但是注意不可以将两个常量赋值成一样的值。
enum season{Spring,Summer,Autumn,Winter}s;
printf("%d",Spring);
枚举中的常量可以直接在程序中使用 -----> 所以,程序中其它名字不能和枚举类型名相同。
2. 定义枚举变量
上面有说过, 但是枚举变量就是一个整型变量,只是它类型化了,有更多的约束。
enum season{Spring,Summer,Autumn,Winter}s;
s = Spring; // 给枚举变量进行赋值
s = 0; // 赋值
首先,我们建议使用第一种赋值方式。
当使用第二种的时候,(编译器可能会给出警告),如果我们赋值的值在常量值的范围内,不会有问题,但是如果赋值超出了范围,就会出错(但是,编译器可能不会报错)。 比如: s = 10; // 不对
使用第一种,不仅可读性高,我们可以明确的直到具体数字代表着什么,而且,直接赋值不会超出范围。
其实上面说到定义的枚举变量,其值不能超出枚举中的范围(也就是必须等于常量的值) ,这就是约束。 前面说,枚举变量是一个整型变量,但是对于这样的整型变量,我们不能随意赋值一个整数值,只能赋值给它,设置的常量值。
其实枚举,可以看作一个整型,但是它规定了其定义的变量的赋值范围。