C语言数据类型枚举enum全面详解示例教程

 更新时间:2021年10月22日 15:07:02   作者:高邮吴少  
生活中有很多地方会用到枚举,比如一周有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枚举数据类型的资料请关注脚本之家其它相关文章!

相关文章

  • Qt 使用Poppler实现pdf阅读器的示例代码

    Qt 使用Poppler实现pdf阅读器的示例代码

    下面小编就为大家分享一篇Qt 使用Poppler实现pdf阅读器的示例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • 浅析c++中new和delete的用法

    浅析c++中new和delete的用法

    以下是对c++中new和delete的用法进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-09-09
  • 基于C++中常见编译错误的总结详解

    基于C++中常见编译错误的总结详解

    本篇文章是对C++中的常见编译错误进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言超细致讲解函数递归

    C语言超细致讲解函数递归

    程序调⽤⾃⾝的编程技巧称为递归 recursion)函数⾃⼰调⽤⾃⼰就是递归,你也可以理解成是⼀种嵌套结构,但递归分为俩部分,第⼀是“递”,进⼊嵌套结构。第⼆是”归“,最终会⼀步⼀步返回。第⼀次接触递归都会很懵,慢慢理解这个过程就明⽩了
    2022-05-05
  • VSCode配置C语言环境的方法

    VSCode配置C语言环境的方法

    这篇文章主要介绍了VSCode配置C语言环境的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • QT .pro文件使用解析

    QT .pro文件使用解析

    QT工程的pro文件,在创建工程时由QTCreater自动创建,我们可以往里面添加内容,增加库文件的声明,包含路径、预处理器定义,生成目录,输出中间目录等等设置,本文就来介绍一下
    2022-04-04
  • C++类与对象深入之构造函数与析构函数详解

    C++类与对象深入之构造函数与析构函数详解

    朋友们好,这篇播客我们继续C++的初阶学习,现在对我们对C++非常重要的一个知识点做出总结,整理出来一篇博客供我们一起复习和学习,如果文章中有理解不当的地方,还希望朋友们在评论区指出,我们相互学习,共同进步
    2022-06-06
  • C语言中的自定义类型之结构体与枚举和联合详解

    C语言中的自定义类型之结构体与枚举和联合详解

    今天我们来学习一下自定义类型,自定义类型包括结构体、枚举、联合体,小编觉得挺不错的,现在就分享给大家,也给大家做个参考
    2022-06-06
  • C语言typedef与复杂函数声明问题的深入解析

    C语言typedef与复杂函数声明问题的深入解析

    以下是对C语言中的typedef与复杂函数声明问题进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-07-07
  • QT的QWebEngineView类知识点详细介绍

    QT的QWebEngineView类知识点详细介绍

    QWebEngineView是Qt框架中的组件,基于Chromium内核,支持HTML5、CSS3、JavaScript等Web技术,适用于嵌入网页内容到Qt应用程序,它提供了丰富的接口如加载、导航、与JavaScript交互等,并支持信号槽机制处理各种网页事件,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-10-10

最新评论