【枚举的定义;枚举变量的定义、初始化和赋值】(学习笔记16--枚举)

2023-11-13

使用枚举类型,可以提高程序代码的健壮性和可读性,并且枚举成员属于常量,甚至可以使用枚举成员名作为维的大小,来进行数组的定义

枚举的定义

定义枚举的格式为

enum 枚举名{枚举成员1,枚举成员2,...};

下面来定义一个和方向相关的枚举类型Dir

enum Dir{UP,DOWN,LEFT,RIGHT};

枚举成员属于常量,默认情况下,枚举成员是一个整型值,其第一个枚举成员的值为0,而后续枚举成员的值为其前一个枚举成员的值加1

printf("UP = %d\n",UP);
printf("DOWN = %d\n",DOWN);
printf("LEFT = %d\n",LEFT);
printf("RIGHT = %d\n",RIGHT);

结果如下

UP = 0
DOWN = 1
LEFT = 2
RIGHT = 3

也可以自己设置枚举成员的值

enum Dir{UP,DOWN = 10,LEFT,RIGHT};
printf("UP = %d\n",UP);
printf("DOWN = %d\n",DOWN);
printf("LEFT = %d\n",LEFT);
printf("RIGHT = %d\n",RIGHT);

结果如下

UP = 0
DOWN = 10
LEFT = 11
RIGHT =12

枚举成员是一个常量,可以将其作为定义数组的长度大小,也可以将其作为一个整型值初始化或赋值给一个整型变量,甚至将其作为表达式的一部分

enum Dir{UP,DOWN,LEFT,RIGHT};
char arr[RIGHT];
int i = UP;
i = DOWN + 3;

枚举变量的定义

定义好枚举之后,就拥有了相应的枚举类型,可以根据这个枚举类型来定义相应的枚举变量。与结构体和联合体的变量定义方式类似,在定义枚举变量时,也可以采用以下3种不同的方式

(1)先定义枚举,再定义枚举变量

enum Dir dir1;

(2)在定义枚举的同时定义枚举变量

enum Dir{UP = -3,DOWN,LEFT,RIGHT}dir2;

(3)定义无名枚举类型的枚举变量

enum {UP = -3,DOWN,LEFT,RIGHT}dir3;

第一种方式可以定义出具有局部或全局作用域的枚举变量
第二种和第三种定义出来的都是具有全局作用域的枚举变量
由于第三种方式定义的是无名枚举类型,因此,只能在该枚举类型定义处直接定义枚举变量,在其它地方无法定义出该类型的枚举变量

枚举变量的初始化与赋值

在定义枚举变量的同时,可以对其进行初始化

enum Dir dir1 = LEFT;

也可以对枚举变量进行赋值操作

enum Dir dir2;
dir2 = DOWN;

可以将枚举成员视为整型常量,而将枚举变量视为整型变量。因此,可以将一个整型值初始化或赋值给枚举变量

enum Dir dir = 2;
dir = 1;

编写程序,用键盘上的W、S、A、D四个按键来表示上、下、左、右四个方向,当用户按下相应按键后,程序能够打印输出用户所选择的方向

#include <stdio.h>
#include <ctype.h>
enum Dir{UP,DOWN,LEFT,RIGHT};
void printDirect(enum Dir dir)
{
	switch(dir)
	{
		case UP:
			printf("The direction is UP.\n");
			break;
		case DOWN:
			printf("The direction is DOWN.\n");
			break;
		case LEFT:
			printf("The direction is LEFT.\n");
			break;
		case RIGHT:
			printf("The direction is RIGHT.\n");
			break;
	}
}
int main()
{
	enum Dir dir;
	char ch;
	printf("Please determine a direction:\n");
	scanf("%c",&ch);
	ch = islower(ch) ? toupper(ch) : ch;
	switch(ch)
	{
		case 'W':
			dir = UP;
			break;
		case 'S':
			dir = DOWN;
			break;
		case 'A':
			dir = LEFT;
			break;	
		case 'D':
			dir = RIGHT;
			break;
	}
	printDirect(dir);
	return 0;
}

主函数中,首先定义了两个变量,一个是枚举Dir类型的变量dir,一个是字符类型变量ch。在获取用户输入的字符后,将其保存至变量ch中,若用户输入的是小写字母,可以通过三目条件运算符,将存储在变量ch中的小写字母转换为大写字母。接着在switch语句中,当找到与变量ch匹配的case标签后,能够将一个正确的枚举成员赋值给枚举变量dir。最后,将枚举变量dir作为printDirect函数的实参,进行函数的调用

结果如下

Please determine a direction:
a
The direction is LEFT.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【枚举的定义;枚举变量的定义、初始化和赋值】(学习笔记16--枚举) 的相关文章

  • Java面试复习提纲

    Java面试复习提纲 作者 egg 邮箱 xtfggef gmail com 微博 http weibo com xtfggef 博客 http blog csdn net zhangerqing 本章主要介绍一下面对即将来临的Java面试
  • apache24服务启动

    声明 本文 禁止转载 本文所有观点和概念都系个人总结 难免存在疏漏之处 为不至于诱导初学者误入歧途 望各位以自己实践为准 特此声明 如有错误请告知 服务 链接 https pan baidu com s 1VS xSo3eC7TxihciN
  • 仅四步教你快速接入Seata分布式事务

    简介 Seata 是一款开源的分布式事务解决方案 致力于提供高性能和简单易用的分布式事务服务 Seata 将为用户提供了 AT TCC SAGA 和 XA 事务模式 为用户打造一站式的分布式解决方案 本篇文章将以视频与文字介绍的形式 指引你
  • Qt+SDL播放YUV视频文件

    播放一个yuv420p格式的文件 yuv的格式与rgb格式的存储方式不同 yuv数据是 yyyyyyyy uu vv 的存储 rgb是rgba rgba rgba 存储 同样一帧图像 yuv420会比rgb数据更小 读取时就要注意数据存储格
  • 关于文件读写操作中ios::app与ios::ate的区别

    前几天在用到对文件操作的时候上网查询了一下 当时只看到说在文件末尾继续写是用ios ate 结果当然是屡试爽了 后来又仔细看了一下文章 才发现ios app 用这个果然就可以了 Google了一下两者的区别 出现了一个表格 还是说的很详细吧
  • 数据分析36计(17):Uber的 A/B 实验平台搭建

    往期系列原创文章集锦 数据分析36计 16 和 A B 测试同等重要的观察性研究 群组研究 VS 病例 对照方法 数据分析36计 15 这个序贯检验方法让 A B 实验节约一半样本量 数据分析36计 14 A B测试中的10个陷阱 一不注意

随机推荐

  • C语言基础(底层、运算符)

    一 C语言底层 程序 算法 数据 1 整型 字符类型 字符常量 a 一个字符 字符串常量 abcd 多个字符 字符变量 1 定义字符 有无符号 类型 变量 2 引用变量 引用变量的内容 2 浮点型 1 浮点型常量 十进制 3 14 科学表示
  • Aix上的压缩与解压

    1 compress生成一个后缀为 Z的压缩文件 可用compress d或者uncompress解压后缀为 Z的文件 若压缩的文件是文本文件 可用zcat直接查看压缩文件 不需要先解压 再用cat 2 gzip生成一个后缀为 gz的压缩文
  • python backtrace注意事项

    1 当python异常时 web服务器一般会记录异常日志 比如uwsgi 如果用python自带的web server 那么启动时要把输出重定向一下 2 有时要把异常backtrace与普通日志记录在一起 可以在logging xxx 函数
  • js浮点数计算精度问题

    js语言在进行数字计算时会发生计算精度失真的情况 因为javascript使用了IEEE 745浮点数表示法 在运算是会将浮点数转换为二进制数字计算 例如 0 1 gt 0 0001100110011001 无限 0 2 gt 0 0011
  • 【干货】今日头条的新闻推荐算法原理

    信息越来越海量 用户获取信息越来越茫然 而推荐算法则能有助于更好的匹配海量内容和用户需求 使之更加的 有的放矢 为让产业各方更好的了解算法分发的相关技术和原理 我们特整理了当下最具影响力的平台的相关干货 和各方分享 本期微信 我们将推荐影视
  • pip安装pytorch 清华镜像

    每次要搭配环境的时候就头大 资源基本是国外 下载起来特别慢 有些连服务器都访问不了 不用镜像 按照书上或者网上的正常流程搭配环境 基本上都是以超时告终 然后就在网上疯狂找资源 网上有人说是个程序员都会翻墙 我可能是个假的程序员吧 什么都不会
  • Arthas watch命令使用

    目录 属性遍历深度 1 watch 类全限定名 方法名 遍历深度为1的入参 对象 返回信息 2 watch 类全限定名 方法名 x n 观察遍历深度为n的入参 对象 返回信息 观察事件点 1 watch 类全限定名 方法名 params x
  • Python爬虫从入门到精通:(39)增量式爬虫_Python涛哥

    概念 检测网络数据更新的情况 以便于爬取到最新更新出来的数据 实现核心 去重 实战中去重的方式 记录表 记录表需要记录什么 记录的一定是爬取过的相关信息 例如某电影网 爬取过的相关信息 每一部电影详情页的url 只需要使用某一组数据 该组数
  • 一个产品的商业目标应该从哪些方面制定?

    产品面向社区治理相关服务 比如信息发布 事件调解 活动发布 数据统计等等 但感觉缺少合理的商业策略和商务模式 文心一言 一个产品的商业目标应该从以下几个方面制定 市场定位 确定你的产品的目标客户是谁 这可以是你的社区治理服务所面向的人群 也
  • 【数学公式】Mathpix和MathType等等

    MathML MathML指 数学标记语言 是XML语言的一个子集 用来在web网页 甚至部分软件中显示数学公式 简言之 就是使用特殊的类似HTML的标记在网页中显示数学公式 MathType公式编辑器 MathType是一个强大的数学公式
  • JSP的原理

    Tomcat的lib目录下的jasper jar包 这个包里面有一个HttpJspBase类 这个类我们看一下源码 Source code recreated from a class file by IntelliJ IDEA power
  • CC++ 标头和源文件:它们如何工作?

    本文将向您展示将程序划分为C中的组件部分或正确使用标头和源文件C 诀窍 介绍 我主要是为我的一个朋友写这篇文章的 但是 如果我不与大家分享这一点 我会对社区造成伤害 所以就在这里 我们将探索标头和源文件以及它们的作用 这些代码的大部分在 C
  • SSH框架简介篇

    文章目录 概述 目录结构 struts Spring Hibernate 总结 概述 SSH框架 Struts Spring Hibernate 是一种广泛应用的Java企业级开发框架组合 它将Struts Spring和Hibernate
  • LVM原理及配置

    1 简介 1 1 什么是LVM LVM是 Logical Volume Manager 逻辑卷管理 的简写 它由Heinz Mauelshagen在Linux 2 4内核上实现 目前最新版本为 稳定版1 0 5 开发版 1 1 0 rc2
  • 中国天气网接口

    中国天气weather com http m weather com cn data 101110101 html 六天预报 http www weather com cn data sk 101110101 html 实时天气信息 其中1
  • RSA pkcs1与pkcs8 java获取私钥

    RSA pkcs1与pkcs8 java获取私钥 目录 RSA pkcs1与pkcs8 java获取私钥 获取秘钥 获取pkcs1 格式秘钥 获取pkcs8格式秘钥 读取秘钥信息 解密 获取秘钥 maven依赖
  • 【网络】几种常见的协议

    几种常见的协议 DNS Domain Name System 域名解析协议 端口号 53 通过域名解析获得域名所对应的IP FTP File Transfer Protocol 文件传输协议 端口号 21 用户可通过客户机程序向远程主机上传
  • el-input正则限制

    el input限制只能输入1 9且只保留一位小数 return rules deductionPrice required true message 请输入折扣力度 trigger blur validator this valuePri
  • 栈溢出学习

    前言 跟着ctfwiki学习 所有题目都在ctfwiki上可以找到 加油加油 栈溢出原理 栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数 因而导致与其相邻的栈中的变量的值被改变 看一个简单的程序 include
  • 【枚举的定义;枚举变量的定义、初始化和赋值】(学习笔记16--枚举)

    目录 枚举的定义 枚举变量的定义 枚举变量的初始化与赋值 使用枚举类型 可以提高程序代码的健壮性和可读性 并且枚举成员属于常量 甚至可以使用枚举成员名作为维的大小 来进行数组的定义 枚举的定义 定义枚举的格式为 enum 枚举名 枚举成员1