生活中有很多地方会用到枚举,比如一周有7天,可以一一枚举;性别有男、女...等等都可以可以一一枚举,今天来和笔者一起学习一下c语言枚举吧
一、枚举类型的定义
enum Day//enum Day是一种类型
{
Mon,//周一到周日这些叫枚举的可能取值,也叫枚举常量
Tue,
Wed,
Thur,
Fri,
Sat,
Sun,
};
上述代码定义的enum Day是一种枚举类型,{}中内容是枚举类型的可能取值,也可叫作枚举常量。
这些枚举常量都是有值的,默认从0开始,依次往后递增1,如果你愿意赋值也是可以的。
代码如下:
#include<stdio.h>
enum Color//enum Color是一种类型
{
red,
green,
blue
};
int main()
{
printf("%d\n", red);
printf("%d\n", green);
printf("%d\n", blue);
}
不赋初值打印0, 1,2
#include<stdio.h>
enum Color//enum Color是一种类型
{
red=2,
green,
blue=6
};
int main()
{
printf("%d\n", red);
printf("%d\n", green);
printf("%d\n", blue);
}
赋初值后打印初值内容,如果你有一个没有赋值,会紧接上一个赋值内容+1
这里green并没有赋值,但我们知道red是2,按照枚举规则,green会在red的基础上加1变成3,注意,blue是有赋值的,所以blue不需要在green的基础上加1,blue就是6
注意:因为是枚举{}内的叫作枚举常量,常量是不能改的,比如你在main函数里进行赋值操作,red=9;这个铁铁的会报错,一定要区分枚举初始化和赋值的区别。
二、枚举类型的使用
2.1创建变量
我们前面说过,enum Day、enum Color这种叫作枚举类型,既然它是类型,它就可以创建变量,
代码如下:
#include<stdio.h>
enum Color//enum Color是一种类型
{
red,
green,
blue
};
int main()
{
enum Color a = 1;
enum Color b = green;
}
我们用枚举类型创建了变量a和b,这里需要注意的是,把1赋给a,在c语言环境下编译器不会报错,但c++下就会出现问题,编译器会认为1是一个整形,你赋给一个枚举类型显然是有问题的。所以我们这里最好把枚举可能取值赋给枚举变量。
2.2一些优点
到这里大家可能会有一些疑惑,我们可以用#define来定义常量,为什么要用枚举呢?我们来看一下它们的区别:
代码如下(示例):
#define red 2
#define green 4
#define blue 8
enum Color
{
Red,
Green,
Blue
};
首先由2.1知,c++环境下,枚举类型会对其他类型的赋值进行警告,而#define定义的常量是没有类型的;
第二就是防止命名污染,举个栗子:#define red 2,这是全局范围命名red为2,那假如你其他地方用到2这个数字,到时候到底是2本身还是red的意思?而枚举定义的red是枚举类型的一个可能取值,不会影响到其他数据;
第三,枚举是可以调试的,调试的过程中你大可输入枚举类型创建的变量,但是#define red 2这种,red如果在代码中会被自动替换为2,你无法用red进行监视
第四,就是可以一次定义多个枚举常量
总结
今天我们学完了枚举的相关定义,枚举类型的使用以及枚举相对于#define定义的区别,下一期笔者还会继续更新C语言联合(共用体相关知识),期待你的关注,预祝读者学习愉快!更多关于C语言enum枚举数据类型的资料请关注编程学习网其它相关文章!
本文标题为:C语言数据类型枚举enum全面详解示例教程
- C语言qsort()函数的使用方法详解 2023-04-26
- C语言详解float类型在内存中的存储方式 2023-03-27
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- Easyx实现扫雷游戏 2023-02-06
- ubuntu下C/C++获取剩余内存 2023-09-18
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- C++ 数据结构超详细讲解顺序表 2023-03-25
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- Qt计时器使用方法详解 2023-05-30