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

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

前言 本文介绍自定义类型中的枚举 一、枚举 枚举,通俗来讲就是一一列举 要注意枚举枚举常量是有限个数 例如,三原色:红黄蓝;性别:男、女、保密;…… 二、定义与声明 #define _CRT_SECURE_NO_WARNINGS...2.防止了命名污染(封装) 3.与define宏定义相比较: ①便于调试; 【用define定义的值不能调试,因为define是在程序预处理阶段就将代码进行改变了,而调试是在程序生成.exe可执行程序时才能进行调试...,因此不能对宏定义进行调试,而枚举可以被调试】 ②枚举类型由类型检查更加严谨(C语言中体现不多,但是C++会体现); 【只能拿枚举常量给枚举变量赋值才不会出现类型差异】 ③使用更方便,一次可以定义多个变量...,用define就得一个一个定义。...---- 总结 本文主要介绍了自定义类型中的结构体类型的相关知识,希望这篇文章对你理解结构体有所帮助。

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

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

2、 和#define定义的标识符⽐较枚举有类型检查,更加严谨。...#define定义的标识符是不过是一个符号,而枚举是一种类型,有类型检查写代码会更加严谨 3、 便于调试,预处理阶段会删除 #define 定义的符号 枚举类型在调试的时候会显示出成员名,但是#define...、使⽤⽅便,⼀次可以定义多个常量 5....、枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤ 枚举有作用域的概念,在一个函数内部使用,出了函数就不能用了,但是#define定义的标识符没有作用域概念,他是一个全局都可以使用的常量。...2.3 枚举类型的使用 使用方法:使⽤枚举常量给枚举变量赋值 那是否可以拿整数给枚举变量赋值呢? 在C语⾔中是可以的,但是在C++是不⾏的,C++的类型检查⽐ 较严格。

8610

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

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

7310

C语言 | 枚举概述

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

78140

C语言 | 枚举概述

在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...C语言枚举简述 在C语言中,如果一个变量只有几种可能的值,则可以定义枚举类型,所谓“枚举”就是指把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。...枚举变量和其他数值型不同,它们的值只限于花括号中指定的值之一,枚举常量是由程序设计者命名的,用什么名字代表什么含义,完全由程序员根据自己的需要而定,并在程序中作相应处理。...一般形式 enum[枚举名]{枚举元素列表} 其中枚举名应遵循标识符的命名规则。 C语言编译对枚举类型的枚举元素按常量处理,故称枚举常量。...不要因为他们是标识符而把他们看作变量,不能对他们赋值,但枚举元素可以用来判断比较。 每一个枚举元素都代表一个整数,C语言编译按定义时的顺序默认它们的值为0,1,2,3,4,5……。

57110

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...虽然更简洁了,但是因为没有了名字,后面就不能用该枚举定义新的变量。

90651

C语言枚举类型)

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

1.8K30

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

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

10110

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

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

9610

C语言——枚举类型

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

10410

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语言中不会报错

10410

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

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

55800

9.6 C语言枚举类型

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

9052725

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

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

3.4K30

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 //枚举类型 /* 枚举内部的是常量标识符,这些常量标识符就相当于全局变量

78120

C语言进阶-自定义类型:结构体位段枚举联合

位段 什么是位段 位段的内存分配 位段的跨平台问题 枚举enum 枚举类型的定义 枚举的优点 enum 与 #define 的区别 联合union 联合类型的定义 联合的特点 union和大小端 联合大小的计算...c2它的对齐数为4(int大小为4,小于平台默认值8),该变量要对齐到偏移为4的倍数处,即从偏移为4的位置开始存放 对于c3(char类型的对齐数为1,正数都为1的倍数),从偏移为9的位置开始放...i; }; printf("%d\n", sizeof(struct S2)); //输出结果:8 解释: 第一个成员c1在与结构体变量偏移为0的地址处 c2放在偏移为1的地址处 i放在偏移为...)); //输出结果:16 解释: 第一个成员d在与结构体变量偏移为0的地址处 c放在偏移为8的地址处 i放在偏移为12的地址处(对齐到偏移为对齐数4的倍数处) 示例4: struct S4...1,#define则不会) 使用定义: #define宏一次只能定义一个 枚举可以一次定义大量相关的常量 调试: 一般在编译器里,可以调试枚举常量,但是不能调试宏常量 定义类型: 枚举量具有类型

64720

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语言进阶(六)--自定义类型详解(结构体+枚举+联合)

p=&x;   该等式并不成立,在c语言中,虽然他们的成员变量是相同的,但是他们的结构体类型不相同,所以编译过程会报错,不同类型的成员互不兼容。...3.枚举的优点 为什么使用枚举? 我们可以使用 #define 定义常量,为什么非要使用枚举?...枚举的优点: 增加代码的可读性和可维护性 和#define定义的标识符比较枚举有类型检查,更加严谨。 防止了命名污染(封装) 便于调试 使用方便,一次可以定义多个常量。...不懂的同学请关注博主之前的文章——C语言进阶(一)数据的存储中的百度系统工程师面试题。...好的,关于自定义类型的详解就说到这里,谢谢大家的欣赏!! 未完待续!!!!! C语言进阶(七)——动态内存管理已更新

48430
领券