c语言学习笔记 - 枚举类型
今天学习了c语言的枚举类型的使用,可能是PHP里没使用过,开始看的时候还是觉得有点怪,后来做了下例子才理解,这里做个笔记记录一下。
#include <stdio.h>
enum animals {Cat,Dog,Rat}; // enumeration 是遍历, 列举的意思,这里用 enum 表示枚举变量 可以这样记 e + num ->every num 每一个 ->枚举
// animals 指这个枚举类型的标签名,例如一组蔬菜常量名字可以用 vegetable来做标记,后边的 {Cat,Dog,Rat}是这一组常量列表,这和数组有点像但又不一样
// 因为是常量,这些Cat,Dog,Rat不用加单引号变成字符串。
//默认 Cat 这个常量是用 0,Dog是1,Rat是2 ,如果想要Cat从1开始 ,则用{Cat=1,Dog,Rat} 后面会递增1
void cat_say(void){
puts("喵喵");
}
void dog_say(void){
puts("汪汪");
}
void rat_say(void){
puts("吱吱");
}
int main(void)
{
enum animals selected; // enum animals 这个是指 selected是 enum animals这样一种枚举类型变量 还没有赋值,后面会赋值
// 就好比 int i; i是int型一样,只不过这里是 enum animals这种自定义的枚举类型变量
printf("请输入一个动物的代号,你将得到它的叫声 0代表Cat, 1代表Dog 2代表rat \n");
int choose;
scanf("%d",&choose);
selected=(enum animals)choose; // 注意这里 ,selected 开始具体赋值了,c语言赋值要类型点对点,事先声明的类型要能对上,这和PHP不一样
// 这个(enum animals)并不是什么奇怪的东西,就是一种类型转换 比如之前用的 (double)a 把一个数转成double类似
//这里假如 choose = 1 selected 会是 Dog 常量,但不能直接 printf("%s",selected);,只能是printf("%d",selected);输出一个数字
switch(selected){
case Cat: //常量
cat_say();
break;
case Dog:
dog_say();
break;
case Rat:
rat_say();
break;
}
return 0;
}
c语言学习笔记 - 枚举类型的更多相关文章
- C语言学习之枚举类型
前言 枚举(enum)类型是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把 ...
- C语言学习笔记--枚举&结构体
枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明: enum 枚举类型名字 {名字0,名字1,...,名字n}: 枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为 ...
- Java学习笔记-枚举类型
枚举类型 枚举类型就是预先定义的一类常量集合,如一周的时间.水果的类型等.需要注意的几点内容如下: 定义枚举类时,Java默认继承java.lang.Enum,所以定义的枚举类不能继承其他类型: 枚举 ...
- Java编程思想学习笔记——枚举类型
前言 关键字enum可以将一组具名的值有限集合创建一种为新的类型,而这些具名的值可以作为常规的程序组件使用. 正文 基本enum特性 调用enum的values()方法可以遍历enum实例,value ...
- GO语言学习笔记2-int类型的取值范围
相比于C/C++语言的int类型,GO语言提供了多种int类型可供选择,有int8.int16.int32.int64.int.uint8.uint16.uint32.uint64.uint. 1.i ...
- C语言学习笔记10-结构体、枚举、联合体
C语言学习笔记10-结构体.枚举.联合体 待传
- Go语言学习笔记(1)——顺序编程
Go语言学习笔记这一堆主要是<Go语言编程>(人民邮电出版社)的读书笔记.中间会穿插一些零碎的点,比如源码学习之类的.大概就是这样吧. 1. 顺序编程 1.1 变量 变量的声明: var ...
- python语言学习笔记整理
什么是程序? 程序等于数据结构加算法,那么数据结构是一个静态的东西,算法是一个动态的东西,我们用一个新的语言编写这个程序,我们要考虑到语言也主要由数据结构和算法相关的东西,或静态或动态的东西来构成,所 ...
- GO语言学习笔记(一)
GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...
随机推荐
- 有关axios的request与response拦截
// http request 拦截器 axios.interceptors.request.use( config => { var token = localStorage.getItem( ...
- requestAnimationFrame动画封装
function Animator(duration, progress) { this.duration = duration; this.progress = progress; this.nex ...
- iOS开发之SceneKit框架--实战地月系统围绕太阳旋转
1.创建地月太阳系统scn文件 注意:moon在earth结构下,earth和moon在sun结构下. 2.获取scn中模型的对应节点和自转(太阳为例) 获取节点: name是对应的Identity字 ...
- 02.万恶之源-python 运算符和编码
一.流程控制语句if: 第一种语法: (最基本的语法) if 条件: 代码块/结果1 结果2 # 如果条件是真(True)执行结果为1,然后结果为2,如果条件为错(False), 直接结果2. 第二种 ...
- <小白学技术>将python脚本导出为exe可执行程序
1.简介(为啥需要导出为exe可执行程序) python写完的程序靠命令来执行,显得太专业,不符合python简单的特点(好吧,主要是太low) 代码给别人执行,别人没有你的python库也没法用(双 ...
- springcloud(十四)、ribbon负载均衡策略应用案例
一.eureka-server服务中心项目不再创建 二.eureka-common-empdept公共组件项目不再掩饰 三.创建eureka-client-provider-empdept-one提供 ...
- 我最恨ubuntu的自动升级内核功能
总是提示我boot分区空间不足, 怎么办, 删除原有不用的内核呗,手动来做. 1.查看当前使用内核版本号.输入 uname -a 查看.uname -a 2.删除旧内核. 切换root: su 输入命 ...
- 解决在Spring整合Hibernate配置tx事务管理器出现错误的问题
问题描述: Error occured processing XML 'org/aopalliance/intercept/MethodInterceptor'. See Error Log for ...
- 全网最全乌云drops文章下载(epub)
前几天搞得epub格式的,为了方便kindle才做的,没想到站关了. 链接: http://pan.baidu.com/s/1eRIoJC2 密码: b6aq
- Codeforces 548E Mike ans Foam (与质数相关的容斥多半会用到莫比乌斯函数)
题面 链接:CF548E Description Mike is a bartender at Rico's bar. At Rico's, they put beer glasses in a sp ...