首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言——自定义类型之枚举

前言 本文介绍自定义类型中枚举 一、枚举 枚举,通俗来讲就是一一列举 要注意枚举枚举常量是有限个数 例如,三原色:红黄蓝;性别:男、女、保密;…… 二、定义与声明 #define _CRT_SECURE_NO_WARNINGS..., 一般默认第一个枚举常量值是0,后面的每一个枚举常量值都是给前一个值加一; 如果给第一个枚举常量进行赋值,则后面的枚举常量也会随之变化,规则也是加一。...三、枚举优点 1.增加了代码可读性和可维护性 例如:之前编写小游戏主菜单就可以用枚举来将switch选择中0、1、2进行替换,更方便阅读。...,因此不能对宏定义进行调试,而枚举可以被调试】 ②枚举类型由类型检查更加严谨(C语言中体现不多,但是C++会体现); 【只能拿枚举常量给枚举变量赋值才不会出现类型差异】 ③使用更方便,一次可以定义多个变量...---- 总结 本文主要介绍了自定义类型中结构体类型相关知识,希望这篇文章对你理解结构体有所帮助。

31720
您找到你想要的搜索结果了吗?
是的
没有找到

C语言:自定义类型——联合和枚举

一、联合体 1.1 联合体类型声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以是不同类型。 声明方式如下图: 那联合体和结构体究竟有什么区别呢??...2、 和#define定义标识符⽐较枚举有类型检查,更加严谨。...#define定义标识符是不过是一个符号,而枚举是一种类型,有类型检查写代码会更加严谨 3、 便于调试,预处理阶段会删除 #define 定义符号 枚举类型在调试时候会显示出成员名,但是#define...、枚举常量是遵循作⽤域规则枚举声明在函数内,只能在函数内使⽤ 枚举有作用域概念,在一个函数内部使用,出了函数就不能用了,但是#define定义标识符没有作用域概念,他是一个全局都可以使用常量。...2.3 枚举类型使用 使用方法:使⽤枚举常量给枚举变量赋值 那是否可以拿整数给枚举变量赋值呢? 在C语⾔中是可以,但是在C++是不⾏C++类型检查⽐ 较严格。

11110

C语言定义数组时使用枚举作为数组下标

,如果这个数组里保存数据比较复杂,那么这种硬编码下标方式非常危险。...如下“` static char* language_type_data[] = { "Chinese", "German", "American" }; 这里定义了一个字符指针型数组,用来保存语言类型...,如下顶一个了一个枚举类型,用来作为访问数组脚标。...这样写可读性很高,而且后期可以继续添加数组成员,枚举成员,且代码可以用循环判断来写,这样以后增加新成员只需要在枚举和数组上增加变量既可。但这段代码也有隐藏问题。...为了避免这种隐患可以在定义数组时候使用枚举作为数组下标,这样即使数据输入混乱,但是只要数组定义时候枚举下标定义和数组成员可以对应正确就可以避免这种错误。

3.4K30

C语言——N自定义类型:联合和枚举

#include //联合类型声明 union Un { char c; int i; }; int main() { //联合变量定义 union Un un = {...main() { //联合变量定义 union Un un = { 0 }; // 下⾯输出结果是⼀样吗?...//联合变量定义 union Un un = { 0 }; un.i = 0x11223344; un.c = 0x55; printf("%x\n", un.i); return 0;...我们可以使用 #define 定义常量,为什么非要使用枚举枚举优点: 1. 增加代码可读性和可维护性; 2. 和#define定义标识符⽐较枚举有类型检查,更加严谨; 3....便于调试,预处理阶段会删除 #define 定义符号; 4. 使⽤⽅便,⼀次可以定义多个常量; 5. 枚举常量是遵循作⽤域规则枚举声明在函数内,只能在函数内使⽤。

8810

C语言 | 枚举概述

C语言枚举简述 在C语言中,如果一个变量只有几种可能值,则可以定义枚举类型,所谓“枚举”就是指把可能值一一列举出来,变量值只限于列举出来范围内。...一般形式 enum[枚举名]{枚举元素列表} 其中枚举名应遵循标识符命名规则。 C语言编译对枚举类型枚举元素按常量处理,故称枚举常量。...不要因为他们是标识符而把他们看作变量,不能对他们赋值,但枚举元素可以用来判断比较。 每一个枚举元素都代表一个整数,C语言编译按定义顺序默认它们值为0,1,2,3,4,5……。...以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去动力,跪谢各位父老乡亲啦~ C语言学习路线    C语言开发工具 VC6.0、Devc++、VS2019使用教程...100道C语言源码案例请去公众号:C语言入门到精通

79140

C语言笔记】枚举

其可以与typedef来进行类比进行理解(可查看【C语言笔记】define与typedef区别?)。除此之外,其还可以与枚举enum进行类比。 二、什么是枚举 从字面理解,就是一一列举意思。...DAY是枚举名,可有可无,这个名字是自己定义;MON=1, TUE, WED, THU, FRI, SAT, SUN是枚举成员。...枚举成员值是根据前一个成员值递增1,即上面枚举定义等价于: enum DAY { MON=1, TUE=2, WED=3, THU=4, FRI=5, SAT=6, SUN=7 }; 若上述定义中第一个成员...若其他成员赋了初值,也是遵循“枚举成员值是根据前一个成员值递增1”这一规则,如: enum DAY { A,B,C=100,D,F=200,G }; 此处 A=0 B=1 C=100 D=101...虽然更简洁了,但是因为没有了名字,后面就不能用该枚举定义变量。

91451

C语言 | 枚举概述

在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历是日积月累学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...C语言枚举简述 在C语言中,如果一个变量只有几种可能值,则可以定义枚举类型,所谓“枚举”就是指把可能值一一列举出来,变量值只限于列举出来范围内。...一般形式 enum[枚举名]{枚举元素列表} 其中枚举名应遵循标识符命名规则。 C语言编译对枚举类型枚举元素按常量处理,故称枚举常量。...不要因为他们是标识符而把他们看作变量,不能对他们赋值,但枚举元素可以用来判断比较。 每一个枚举元素都代表一个整数,C语言编译按定义顺序默认它们值为0,1,2,3,4,5……。...C语言枚举输出对应星期 #include int main() { //PS:外国人习惯从0开始 enum Week{ Monday=0, Tuesday=1, Wednesday

58110

C语言枚举类型)

C语言枚举类型常年跑龙套当配角,不受待见,这当然是有其个人原因。今天来个小知识,看看枚举为什么那么衰,也顺便看看怎么用。 我们先来回忆一下为什么需要枚举枚举究竟是个什么东东?...indigo, purple}; enum spectrum color; 注意到上面两行代码,第一行是所谓枚举类型定义及其常量列表,实际上就定义枚举变量有效范围,从red(即1)开始,到purple...第二,使用单词而不是数字,提高程序可读性。 这么看来,枚举是一种挺好玩也挺有用东西,但是在C语言中怎么就不受待见了呢?...原因是C语言只提供了一种阉割版枚举,以上两大目的在C中实质上都是没有实现,也就是说,在C语言中,实际情况是这样: color = blue; // 正确,此时color就是5 color = 5;...你看明白了吧,C语言所谓枚举其实就是个坑爹货,其实就是彻头彻尾整型数据而已。

1.8K30

C语言】自定义类型之联合和枚举

前言 在之前博客中介绍了自定义类型中结构体,有想了解可以点这个链接:link 今天来分享另外两种类型:联合和枚举。 2....我们可以使用 #define 定义常量,为什么非要使用枚举?...枚举优点: 增加代码可读性和可维护性 和#define定义标识符比较枚举有类型检查,更加严谨。...便于调试,预处理阶段会删除 #define 定义符号 使用方便,一次可以定义多个常量 枚举常量是遵循作用域规则枚举声明在函数内,只能在函数内使用 举个例子:实现一个简单计算器 我们就能将加减乘除设置成枚举类型...在C语言中是可以,但是C++是不行C++类型检查比较严格。 有错误请指出,大家一起进步!

10410

【熟视C语言】自定义类型之枚举详解

枚举 枚举,也就是列举。现实生活中有很多这种可以列举出来事物,比如星期一星期二这样有限天数,性别的种类,月份等等。...枚举类型定义 以下几个为枚举类型定义演示: enum day//星期 { Mon, Tues, Wed, Thur, Fri, Sat, Sun }; enum gender//性别...{ Example1,//0 Example2 = 4,//4后面的值依次递增 Example3,//5 Example4,//6 Example5,//7 }; 枚举优点 对于以上定义,...枚举优点: 增加代码可读性和可维护性。 和#define定义标识符相比,枚举有类型检查,更严谨。 防止命名污染(封装)。 便于调试。 使用方便,一次可以定义多个常量。...return 0; } 结语 自定义类型第二部分到这里就结束了,非常感谢各位读者能读完这篇文章,如果你觉得做还不错的话,可以点赞收藏分享,让更多朋友知道。

10610

C语言——枚举类型

一,什么是枚举类型 简单来说,枚举类型就是可以让我们给整数值分配有意义名字,从而使得代码更易读、易维护 二,枚举类型定义和变量声明 1,如何定义和声明 枚举类型定义和变量声明方式也与结构体和联合体相似...(一)枚举类型定义 enum 枚举名 { 成员项表列 }; (二)枚举变量声明 enum 枚举名 变量名 举例:我们定义一个代表颜色枚举类型,然后创建一个枚举变量a enum color...如果我们在创建枚举变量时,为未给成员进行初始化赋值,则C语言会自动赋值 遵循:默认从0开始,依次增1 如果只有前几个值,那么后面未被赋值成员也会被自动赋值,遵循依次增1 例子一(不赋值)...3,命名注意事项 同一个程序中不能定义同名枚举类型;不同枚举类型中,也不能存在同名枚举成员。...⭐C语言枚举变量通常只能被赋值为枚举类型中定义成员。

20510

C语言基础】:自定义类型(二) -->联合和枚举

// 联合体声明 union Un { char c1; int i; }; #include int main() { union Un u = { 0 }; // 联合变量定义...: 增加代码可读性和可维护性 和 #define 定义标识符比较枚举有类型检查,更加严谨。...便于调试,预处理阶段会删除 #define 定义符号 使用方便,一次可以定义多个常量 枚举常量是遵循作用域规则枚举声明在函数内,只能在函数内使用 【示例】:计算器 enum Option { EXIT...注意:C语言中可以利用整数给枚举变量赋值,但是C++不可以,这是因为C++类型检查比较严格。...// enum Color color = RED; // TRUE enum Color color = 0; return 0; } enum Color color = 0; 这一句虽然在C语言中不会报错

11010

C语言】自定义类型详解:结构体、枚举、联合

3、枚举优点 4、枚举使用 三、联合 1、什么是联合 2、联合声明 3、联合特点 4、联合大小计算 5、利用联合判断大小端 前言 C语言数据类型包括基本类型(内置类型)、构造类型(自定义类型...3、结构体变量定义和初始化 结构体定义变量一共有两种方式,一种是在进行结构体声明同时定义结构体变量,另一种是利用结构体类型来定义结构体变量。...即位段中成员在内存中从左向右分配,还是从右向左分配呢?这也是C语言标准未定义; 所以我们说,位段涉及很多不确定因素,是不跨平台,注重可移植程序应该避免使用位段。...3、枚举优点 我们知道,在C语言中我们可以利用 #define 来定义常量,那为什么还要单独设计出一个枚举类型来定义枚举常量呢?...,更加严谨:在使用像C++这种语法检查较为严格编程语言时,枚举变量必须用枚举常量来赋值,而不能使用普查常量来赋值; 防止了命名污染(封装); 便于调试 :用 #define 定义常量在程序预处理阶段就会被替换掉

58100

C语言】联合和枚举

)); return 0; } 定义联合体我们用是union,定义格式与结构体相差不多,大括号里边是成员变量 输出结果: 按照结构体标准来说,这里应该是8,但为什么会是4呢?...1、枚举声明 枚举就是一一列举意思,枚举用enum来定义定义方法也是类似结构体与联合体方式 enum Day//星期 { Mon, Tues, Wed, Thur, Fri, Sat...①增强代码可读与可维护性 ②和#define相比枚举有类型检查,更加安全严谨 ③便于调试,在预处理阶段,会删除#define定义符号,直接用所替换值替换,导致预处理与真实代码不统一,无法更好地调试...④使用方便,一次可以定义多个常量 ⑤枚举遵循作用域规则,枚举声明在函数内,只能在函数内使用 3、枚举类型使用 enum Day { Mon, Tues, Wed, Thur, Fri,...Sat, Sun }; enum Day today = Mon; 使用枚举常量为枚举变量赋值,在C语言中可以用整数来给枚举变量赋值,但在C++中不可以 今日分享就到这里了

5310

9.6 C语言枚举类型

01枚举 1、如果一个变量只有几种可能值,则可以定义枚举类型,所谓“枚举”就是指把可能值一一列举出来,变量值只限于列举出来范围内。...2、枚举变量和其他数值型量不同,它们值只限于花括号中指定值之一。 3、枚举常量是由程序设计者命名,用什么名字代表什么含义,完全由程序员根据自己需要而定,并在程序中作相应处理。...4、一般形式 enum[枚举名]{枚举元素列表},其中枚举名应遵循标识符命名规则。 5、C编译对枚举类型枚举元素按常量处理,故称枚举常量。不要因为他们是标识符而把他们看作变量,不能对他们赋值。...6、每一个枚举元素都代表一个整数,C语言编译按定义顺序默认它们值为0,1,2,3,4,5……。 7、枚举元素可以用来判断比较。...C语言 | 逆序输出10个数 更多案例可以go公众号:C语言入门到精通

9142725

C语言进阶—自定义类型:结构体,枚举,联合

2.结构自引用 正确自引用方式: struct Node { int data; struct Node* next; }; 特殊写法 typedef struct Node { int data...位段空间上是按照需要以4个字节( int )或者1个字节( char )方式来开辟。 3. 位段涉及很多不确定因素,位段是不跨平台,注重可移植程序应该避免使用位段。...这些可能取值都是有值,默认从0开始,一次递增1,当然在定义时候也可以赋初值 但是它值是固定不能更改 2.枚举优点 为什么使用枚举?...我们可以使用 #define 定义常量,为什么非要使用枚举枚举优点: 1. 增加代码可读性和可维护性 2. 和#define定义标识符比较枚举有类型检查,更加严谨。 3....使用方便,一次可以定义多个常量 3.枚举使用 只能拿枚举常量给枚举变量赋值,才不会出现类型差异。

6410

C语言定义数组时使用枚举作为数组下标 ——c99功能

在ANSI标准确立后,C语言规范在一段时间内没有大变动,然而C++在自己标准化创建过程中继续发展壮大。...《标准修正案一》在1994年为C语言创建了一个新标准,但是只修正了一些C89标准中细节和增加更多更广国际字符集支持。不过,这个标准引出了1999年ISO 9899:1999发表。...修改了 / % 处理负数时定义,这样可以给出明确结果,例如在C89中-22 / 7 = -3, -22 % 7 = -1,也可以-22 / 7= -4, -22 % 7 = 6。...增加和修改了一些标准头文件,比如定义 bool 定义一些标准长度 int 定义复数定义宽字符 <wctype.h...为了避免这种隐患可以在定义数组时候使用枚举作为数组下标,这样即使数据输入混乱,但是只要数组定义时候枚举下标定义和数组成员可以对应正确就可以避免这种错误。

1.1K60

C语言-枚举、共用体

匿名方式定义,只能在定义共用体时候就定义变量 union { int a; int b; char c; }a1,a2,a3; //定义3个变量 union app2 {...枚举 C语言枚举可以给一串有序数字集合定义名字,特别是数量较多整数需要定义名字时,比#define更加方便。...特别是定义函数返回值类型,特别方便,项目开发中,一般标准函数返回值都有很多种情况,为了方便调用者判断错误类型,可以把这些错误值全部使用枚举定义,这样调用者就能清楚知道每个数值代表含义。...枚举定义语法: enum 枚举名 {枚举元素1,枚举元素2,……}; 默认成员都是从0开始,如果某一个成员被赋了值,则该成员以后元素都以此为基础递增。...枚举定义及用法示例: #include #include #define DEF_VAL 100 //枚举类型 /* 枚举内部是常量标识符,这些常量标识符就相当于全局变量

79520
领券