常量符号化

用符号而不是具体的数字来表示程序中的数字

一、 枚举

用枚举而不是定义独立的const int变量

  1. 枚举是一种用户定义的数据类型,它用关键字enum如以下语句来声明
enum 枚举类型名字 {名字0 ,、、、 , 名字n};
  1. 枚举类型名字通常并不真的使用,要用的是在大括号里的名字,因为它们就是常量符号,他们的类型是int,值则依次从0到,如:
enum colors {red , yellow , green};
  1. 就创建了三个常量,red的值0,yellow是1,green是2
  2. 当需要一些可以排列起来的常量值时,定义枚举的意义就是给了这些常量值名字
#include <stdio.h>

enum color {red , yellow , green};

void f(enum color c);

int main(void)
{
enum color t = yellow; // scanf("%d" , &t);
f(t); return 0;
} void f(enum color c)
{
printf("%d\n", c);
} // 1
// 因为yellow的下标是1

注意:

  1. 枚举量可以作为值
  2. 枚举类型可以跟上enum作为类型
  3. 但是实际上是以整数来做内部计算和外部输入输出的

二、自动计数的枚举

这样需要遍历所有的枚举量或者需要建立一个用枚举量做下标的数组的时候很方便

enum COLOR {RED , YELLOW , GREEN , NumCOLLORS};

int main(int argc, char const *argv[])
{
int color = -1; char *ColorNames[NumCOLLORS] = {
"red" , "yellow" , "green"
};
char *colorName = NULL; printf("请输入你喜欢的颜色代码:\n");
scanf("%d" , &color); if(color >= 0 && color <NumCOLLORS){
colorName = ColorNames[color];
}else{
colorName = "nuknow";
} printf("你喜欢的颜色是%s\n", colorName); return 0;
} //请输入你喜欢的颜色代码:
//2
//你喜欢的颜色是green

三、枚举量

  1. 声明枚举量的时候可以指定值
  2. enum COLOR {RED=1 , YELLOW , GREEN = 5 , NumCOLLORS};
enum COLOR {RED=1 , YELLOW , GREEN = 5 , NumCOLLORS};

int main(int argc, char const *argv[])
{
printf("code for GREEN is %d\n" , GREEN);
return 0;
}
// code for GREEN is 5

四、枚举只是int

即使给枚举类型的变量赋不存在的整数值也没有任何error

enum COLOR {RED=1 , YELLOW , GREEN = 5 , NumCOLLORS};

int main(int argc, char const *argv[])
{
enum COLOR color = 0;
printf("code for GREEN is %d\n" , GREEN);
printf("and color is %d\n", color);
return 0;
}
// code for GREEN is 5
// and color is 0

枚举

  1. 虽然枚举类型可以当作类型使用,但是实际上很少使用
  2. 如果有意义上排比的名字,用枚举比const int 方便
  3. 枚举比宏好,因为枚举有int类型

C语言入门-枚举的更多相关文章

  1. Swift语言入门之旅

    Swift语言入门之旅  学习一门新的计算机语言,传统来说都是从编写一个在屏幕上打印"Hello world"的程序開始的.那在 Swift,我们使用一句话来实现它: printl ...

  2. c语言入门经典(第5版)

    文章转载:http://mrcaoyc.blog.163.com/blog/static/23939201520159135915734 文件大小:126MB 文件格式:PDF    [点击下载] C ...

  3. C语言学习书籍推荐《C语言入门经典(第5版)》下载

    霍尔顿 (Ivor Horton) (作者), 杨浩 (译者) 下载地址:点我 C语言是每一位程序员都应该掌握的基础语言.C语言是微软.NET编程中使用的C#语言的基础:C语言是iPhone.iPad ...

  4. Go 语言入门(一)基础语法

    写在前面 在学习 Go 语言之前,我自己是有一定的 Java 和 C++ 基础的,这篇文章主要是基于A tour of Go编写的,主要是希望记录一下自己的学习历程,加深自己的理解 Go 语言入门(一 ...

  5. 《JavaScript语言入门教程》记录整理:运算符、语法和标准库

    目录 运算符 算数运算符 比较运算符 布尔运算符 二进制位运算符 void和逗号运算符 运算顺序 语法 数据类型的转换 错误处理机制 编程风格 console对象和控制台 标准库 Object对象 属 ...

  6. 《JavaScript语言入门教程》记录整理:面向对象

    目录 面向对象编程 实例对象与 new 命令 this关键字 对象的继承 Object对象的方法 严格模式(strict mode) 本系列基于阮一峰老师的<JavaScrip语言入门教程> ...

  7. GO 语言入门(一)

    GO 语言入门(一) 本文写于 2020 年 1 月 18 日 Go 由 Google 工程师 Robert Griesemer,Rob Pike 和 Ken Thompson 设计的一门编程语言,第 ...

  8. 踢爆IT劣书出版黑幕——由清华大学出版社之《C语言入门很简单》想到的(1)

    1.前言与作者 首先声明,我是由于非常偶然的机会获得<C语言入门很简单>这本书的,绝对不是买的.买这种书实在丢不起那人. 去年这书刚出版时,在CU论坛举行试读推广,我当时随口说了几句(没说 ...

  9. 我为什么反对推荐新人编程C/C++语言入门?

    虽然我接触编程以及计算机时间比较早,但是正式打算转入程序员这个行当差不多是大学第四年的事情 从03年接触计算机,07年开始接触计算机编程, 期间接触过的技术包括 缓冲区溢出(看高手写的shellcod ...

随机推荐

  1. HTML <input> placeholder 属性

    css ::-webkit-input-placeholder { /* WebKit, Blink, Edge */ color: #909; } :-moz-placeholder { /* Mo ...

  2. react-native scrollview触摸滚动事件

    目录 1.几个已知的滑动或者滑动开始结束的方法: 2.还有其他的一些事件如下 3.下面就这些方法的顺序做个简单的介绍: 4.android上的时间分为两种,一个是滑动一次,一个是连续滑动两次甚至多次, ...

  3. 2018ACM/ICPC 焦作网络预选赛-A Magic Mirror

    Jessie has a magic mirror. Every morning she will ask the mirror: 'Mirror mirror tell me, who is the ...

  4. Grafana基础

    一.Grafana基础 Grafana是一个开源的指标量监测和可视化工具.官方网站为:https://grafana.com/, 常用于展示基础设施的时序数据和应用程序运行分析.Grafana的das ...

  5. USB3.0 图像视频传输 开发 CYUSB3014开发基础(导入官方例程) 转

    CYPREE提供的FX3_SDK开发包里面有很多基础的内容,除了前面提到的几个pdf文件外,还有三个文件夹,是官方提供的基础例程.学习CYUSB3014应该就从这里开始,从这几个例程开始.例程共有三个 ...

  6. Web 前端学习大纲

    什么是前端? 前端即网站前台部分,也叫前端开发,运行在PC端,移动端等浏览器上展现给用户浏览的网页.随着互联网的发展,HTML5,CSS3,前端框架的应用,跨平台响应式网页设计能够适应各种屏幕分辨率, ...

  7. Startup/OWIN框架

    为什么写OWIN框架呢? 因为没接触刀OWIN框架直接去学.NET Core比较生硬,个人见解.首先我们要知道OWIN的由来:ASP.NET和IIS和Windows操作系统的关系在之前是紧密联系的,缺 ...

  8. 【Element UI】使用问题记录

    [Element UI]使用问题记录 转载:https://www.cnblogs.com/yangchongxing/p/10750994.html 下载地址: https://unpkg.com/ ...

  9. mysql过期修改

    1.打开cmd 2.链接数据库如 mysql -h localhost -P 3306 -u root -proot 3.修改密码 mysql < set password for 用户名@lo ...

  10. Java实现微信小程序支付(完整版)

    在开发微信小程序支付的功能前,我们先熟悉下微信小程序支付的业务流程图: 不熟悉流程的建议还是仔细阅读微信官方的开发者文档. 一,准备工作 事先需要申请企业版小程序,并开通“微信支付”(即商户功能).并 ...