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 ...
随机推荐
- Hadoop 与 Spark 对比
Hadoop进行海量数据分析,MR频繁落地,IO操作,计算时间就拉长.由于这种设计影响,计算过程中不能进行迭代计算.造成网络节点数据传输. Spark从理念上就开始改变.应用scala特点解决上面的核 ...
- 2017/8/4 SCJP学习
2 Object Orientation . . . . . . . . . . . . . . . . . . . . . . . . . 85 Encapsulation (Exam Object ...
- JS 常用的两个客户端输出方法
document.write(str) 描述:在网页的<body>标记,输出str的内容. document意思“文档”,就是整个网页了. document是一个文档对象,代表 ...
- 宇宙最强 IDE:VS 2019 正式发布
作者:局长 来源:www.oschina.net/news/105629/ 如约而至,微软已于今天推出 Visual Studio 2019 正式版,一同发布的还有 Visual Studio 201 ...
- POJ 2074 /// 判断直线与线段相交 视野盲区
题目大意: 将所有物体抽象成一段横向的线段 给定房子的位置和人行道的位置 接下来给定n个障碍物的位置 位置信息为(x1,x2,y) 即x1-x2的线段 y相同因为是横向的 求最长的能看到整个房子的一段 ...
- Spring父子上下文(WebApplicationContext)(防止事务失效)
如果你使用了listener监听器来加载配置,一般在Struts+Spring+Hibernate的项目中都是使用listener监听器的.如下 <listener> <listen ...
- UBOOT把文件写入 NandFlash
如果把一个传到内存中的文件写入到 Nand Flash 中, 如:新的 uboot.bin, zImage(内核), rootfs 等, 如果做呢?我们可以用 Nand Flash 命令来完成. 但是 ...
- JavaScript中获取HTML元素的方式
JavaScript中获取HTML元素的方式 1.使用id方式获取元素,返回一个具体对象 document.getElementById(id名) 2.使用className方式获取元素,返回类数 ...
- postgresql数据库安装后的pgadmin4中无法加载本地连接解决办法
postgresql 在安装最后一步提示the database cluster initialisation failed, 而后点开pgadmin4发现如下图所示 经过百度搜索找出问题原因, 由于 ...
- MySQL系列(十二)--如何设计一个关系型数据库(基本思路)
设计一个关系型数据库,也就是设计RDBMS(Relational Database Management System),这个问题考验的是对RDBMS各个模块的划分, 以及对数据库结构的了解.只要讲述 ...