首页 > 其他分享 >枚举——《初学C语言第48天》

枚举——《初学C语言第48天》

时间:2024-01-04 15:34:14浏览次数:46  
标签:常量 48 代码 enum C语言 枚举 调试 define

////三. 枚举

////枚举:就是一一列举,把可能的取值一一列举。

////比如生活中:

////1.一周的星期一到星期日是有限的7天,可以一一列举。

////2.性别有:男、女、保密,也可以一一列举。

////2.月份有12个月,也可以一一列举

////这就可以使用枚举了。

////————1.枚举类型的定义

//enum Day//星期

//{

// Mon,

// Tues,

// Wed,

// Thur,

// Fri,

// Sat,

// Sun

//};

//enum Sex//性别

//{

// MALE,

// FEMALE,

// SECRET

//};

//enum Color//颜色

//{

// RED,

// GREEN,

// BLUE,

//};

////以上定义的 enum Day , enum Sex , enum Color 都是枚举类型。

////{}中的内容是枚举类型的可能取值,也叫 枚举常量 。



////————2.枚举变量赋值只可以用枚举常量

//enum Day

//{

// Mon,

// Tues,

// Wed,

// Thur,

// Fri,

// Sat,

// Sun

//};

//int main()

//{

// enum Day d = Fri;

// return 0;

//}



////这些可能取值都是有值的,默认从0开始,一次递增1,在定义 枚举常量的时候

//// 也可以赋初值,比如下面的枚举类型,red被赋值1,后面的就会依次递增1。

////例如:

//enum Color//颜色

//{

// red= 1,

// green,

// blue,

//};

//int main()

//{

// printf("%d\n",red);

// printf("%d\n", green);

// printf("%d\n", blue);

// return 0;

//}//打印结果为1 2 3




////////————————3.枚举的优点

////为什么使用枚举?

////我们可以使用 #define 定义常量,为什么非要使用枚举?

////答:#define 定义常量时,每定义一个常量就要写一次#define,可读性不高,维护性太低

////枚举的优点:

////1. 增加代码的可读性(能让人快速理解、轻松维护、容易扩展)和可维护性(解决问题效率的快慢)

////2. 和#define定义的标识符比较枚举有类型检查(比如; enum Color clr = green,green有对应的值,假设为1,但是 ),更加严谨。

////3. 防止了命名污染(封装)

////4. 便于调试

////5. 使用方便,一次可以定义多个常量

//////test.c文件————(预处理)———》编译————》链接————》生成.exe的文件

////在预处理阶段,代码会发生如下变化:

//#define M 100;

//void main()

//{

// int n = M;

//}

////就会变成

//void main()

//{

// int n = 100;//M被100替换,#define代码显示

//}

////然后对代码进行调试,对可执行程(.exe)序进行调试,调试在预处理之后。

////调试的代码其实是

//void main()

//{

// int n = 100;

//}

////这样的代码翻译成二进制指令的时候调试,即不能很好的观测到与M相关的值的。

////而枚举类型并不是替换值,如果在代码中我们用到了枚举类型,在调试的时候依然可以观察到这些相关的值的,所以枚举相对于#define更便于调试

////而对于宏(#define)来说其在预处理阶段就替换了。代码就消失了,只是把值赋了过来。导致调试时的代码与所见代码并不相同。

////#define的变量没有类型,而枚举类型有类型




//////4.————枚举的使用

//enum Color//颜色

//{

// RED = 1,

// GREEN = 2,

// BLUE = 4

//};

//enum Color clr = GREEN;//只能拿枚举常量给枚举变量赋值,才不会出现类型的差异。

//clr = 5;

标签:常量,48,代码,enum,C语言,枚举,调试,define
From: https://blog.51cto.com/KKhahaha/9101740

相关文章

  • 通讯录(静态)——《初学C语言第47天》
    cotact.h#define_CRT_SECURE_NO_WARNINGS1#define MAX100#define MAXname20#define MAXsex10#define MAXtre12#define MAXaddr30#include<stdio.h>#include<string.h>#include<assert.h>#include<stdlib.h>//类型声明//人的信息typedefstructp{......
  • 数据光端机与RS-485信号转换技术的实践与应用
    数据光端机与RS-485信号转换技术的实践与应用在数字化和自动化的浪潮中,数据光端机和RS-485信号转换技术以其独特的优势,正成为工业通信领域的重要支柱。它们如同技术世界中的“金线银针”,精密地连接着现代工业系统的每一个节点。数据光端机主要用于将电信号转换为光信号,实现远距离的......
  • 结构体:修改默认对齐数、结构体传参——《初学C语言第45天》
    //////——————7.修改默认对齐数////#pragma:预处理指令,可以改变我们的默认对齐数。//#include<stdio.h>//#pragmapack(8)//设置默认对齐数为8//设置的开始//structS1//{//  charc1;//  inti;//  charc2;//};//#pragmapack()//取消设置的默认对齐......
  • 初识C语言1(C语言的部分基础认知)(初识系列主要目的在于在脑海中初步建立对C语言的认知,建
    C语言是一门通用计算机编程语言,广泛应用于底层开发。 简述写C语言代码的过程       C语言规定:main函数是程序的入口,同时main函数有且只有一个。(一个工程之中)......
  • Python中枚举类型的详解
    1.枚举类型的定义和简单使用在Python中,枚举类型可以通过使用enum模块来实现。下面是一个使用枚举类型的示例:fromenumimportEnum#定义一个枚举类型classColorEnum(Enum):RED=1GREEN=2BLUE=3#使用枚举类型print(ColorEnum.RED)......
  • CF1748F 题解
    这3000?以下,\(\operatorname{op}(i)\)代表对\(i\)进行一次操作。我们考虑暴力。因为每一位都是分开处理的,我们考虑仅仅把一段区间的端点交换。即我们希望通过\(\operatorname{solve(l,r)}\)把\(a_ia_j\)交换而其他下标不动。一个显然的想法是,我们一定需要大量的前后缀异......
  • P4894 题解
    实际上,这是两个向量的叉积已经是其他题解说烂了的。这里只是给出一个容易记忆\(dim\le3\)的行列式的值的办法。我们以\(3\)维行列式为例子,假设为\[\begin{vmatrix}a&b&c\\i&j&k\\o&p&q\end{vmatrix}\]我们有一个神奇的方法来记忆这个行列式的求值。首......
  • P4875 题解
    显然这道题的解法与\(8\)强相关。从这一点下手,我们不难想到先对每一种奶牛做前缀和,这样我们可以做到\(O(8)\)查询每个区间是否可行,从而有了一个\(O(4n^2)\)的纯暴力做法。不知道多少pts,反正不是正解。下一步我们考虑优化。如果我们能快速地找到哪些区间是合法的,那么时间复......
  • c语言结构体成员内存对齐
    在一个结构体或联合体中,编译器会根据具体成员变量的类型选择边界对齐字节,其选择依据是处理器的ABI规范。c语言处了对结构体或联合体内的变量进行对齐处理外(从结构体内部),还需要将整个数据结构分配在以4字节为边界的地方才有意义。结构体成员变量对齐规则有三条(参考来自网上)https......
  • 二叉树遍历(C语言版)
    二叉树遍历先序递归int*res;voidpreorder(structTreeNode*root,int*returnSize){if(root==NULL)return;//根左右res[(*returnSize)++]=root->val;preorder(root->left,returnSize);preorder(root->right,returnSize);}int*pre......