C语言中的enum(枚举类型)

枚举就是把一个事物所有可能的值一一列举出来

一个变量只有几种可能得值,比如星期,只有星期一二三四五六日

定义一个枚举类型,再定义一个这个类型的变量w

#include <stdio.h>
enum WeekDay {
    
    sun,mon,tues,wed,thur,fri,sat};
int main(void)
{
    
    
	enum WeekDay w;
	return 0;
}

枚举的一些性质:

  1. 以星期为例,在下面代码中编译器会把sunmontueswedthurfrisat的值按照顺序分别默认为等于0、1、2、3、4、5、6:

    #include <stdio.h>
    enum WeekDay {
          
          sun,mon,tues,wed,thur,fri,sat};
    int main(void)
    {
          
          
    	enum WeekDay w;
        w = mon;
        printf("w = %d\n",w);//输出结果:w = 1
    	return 0;
    }
    

    值得一提的是,当赋给w枚举元素以外的值时(如w = 'a',或者w = 10;等),编译器并不会报错(本人使用的是gcc编译器),且能正常输出w的值。

  2. 枚举元素的默认值可以更改:

    #include <stdio.h>
    enum WeekDay {
          
          sun=7, mon,tues,wed,thur,fri,sat};
    int main(void)
    {
          
          
    	enum WeekDay w;
        w = sun;
        printf("w = %d\n",w);//输出结果:w = 7
    	return 0;
    }
    

    上面代码把枚举元素sun的默认值改为7,则sun后面的montueswedthurfrisat的值默认值也会分别变为8、9、10、11、12

  3. 如果只改变中间某个枚举元素的默认值:

    #include <stdio.h>
    enum WeekDay {
          
          sun, mon,tues,wed=13, thur,fri,sat};
    int main(void)
    {
          
          
    	enum WeekDay w;
        w = sun;
        printf("w = %d\n",w);//输出结果:w = 0
        w = thur;
        printf("w = %d\n",w);//输出结果:w = 14
    	return 0;
    }
    
  4. 两个enum类型不能有重复的枚举元素:

    #include <stdio.h>
    enum WeekDay1{
          
          sun,mon,tues,wed};
    enum WeekDay2{
          
          wed,thur,fri,sat};
    int main(void)
    {
          
          
        enum WeekDay1 w1;
        enum WeekDay2 w2;
        w1 = mon;
        w2 = sat;
    	return 0;
    }
    

    上方代码会报错:error: redeclaration of enumerator 'wed'

  5. 以星期为例,在定义的时候也可以像结构体或共用体一样直接定义出变量(但是一般不推荐这样):

    #include <stdio.h>
    enum WeekDay {
          
          sun,mon,tues,wed,thur,fri,sat}w1,w2;
    int main(void)
    {
          
          
        w1 = mon;
        w2 = sun;
    	return 0;
    }
    

    如果像上方代码一样,紧接着直接定义出变量,此时enum后面的名称也可以忽略不写(一般也不推荐这样):

    #include <stdio.h>
    enum {
          
          sun,mon,tues,wed,thur,fri,sat}w1,w2;
    int main(void)
    {
          
          
        w1 = mon;
        w2 = sun;
    	return 0;
    }
    

猜你喜欢

转载自blog.csdn.net/YuanApple/article/details/131789261
今日推荐