enum枚举类型

目录

枚举的定义

枚举的本质 

枚举的使用 

总结:  


 

枚举的定义

// 方法一: 
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; // 不对 

使用第一种,不仅可读性高,我们可以明确的直到具体数字代表着什么,而且,直接赋值不会超出范围。 

其实上面说到定义的枚举变量,其值不能超出枚举中的范围(也就是必须等于常量的值) ,这就是约束。 前面说,枚举变量是一个整型变量,但是对于这样的整型变量,我们不能随意赋值一个整数值,只能赋值给它,设置的常量值。

总结:  

其实枚举,可以看作一个整型,但是它规定了其定义的变量的赋值范围。 

你可能感兴趣的:(开发语言)