BuildYourOwnLisp Why we need enum
来源:互联网 发布:c语言主要内容 编辑:程序博客网 时间:2024/06/05 17:11
枚举
你或许已经注意到了,lval
的 type
和 err
字段的类型都是 int
,这意味着它们皆由整数值来表示。
之所以选用 int
,是因为我们将为每个整数值赋予意义,并在需要的时候进行解读。举例来说,我们可以制定这样的规则:
- 如果
type
为 0,那么此结构体表示一个数字。 - 如果
type
为 1,那么此结构体表示一个错误。
这是个简单而高效的方法。
但如果我们的代码中充斥了类似于 0 和 1 之类的“魔法数字”(Magic Number),程序的可读性就会大大降低。如果我们给这些数字起一个有意义的名字,就会给代码阅读者一些有用的提示,提高可读性。
C 语言为此提供了语言特性上的支持——枚举(enum
)。
/* Create Enumeration of Possible lval Types */enum { LVAL_NUM, LVAL_ERR };
enum
语句声明了一系列整型常量,并自动为它们赋值(译者注:从 0 开始,依次递增)。上面的代码展示了如何为 type
字段声明枚举值。
另外,我们还需要为 error
字段也声明一些枚举值。目前,我们需要声明三种类型的错误,包括:除数为零、操作符未知、操作数过大。代码如下:
/* Create Enumeration of Possible Error Types */enum { LERR_DIV_ZERO, LERR_BAD_OP, LERR_BAD_NUM };
0 0
- BuildYourOwnLisp Why we need enum
- BuildYourOwnLisp Why we need pointer 为什么我们需要指针
- Why we need StackOverFlow?
- Why we need mathematics model
- Why do we need Back-end Testing?
- why we need copy constructor & assignment operator
- Why do we need Lambda in Java?
- Why We need Front End Test
- why we need an innovative education system?
- Thought Bubbles - Why do we need symbolic links?
- why do we need root and logger in log4j.xml
- What is software design?why we need it?
- [Coursera/Machine Learning]--Why do we need feature scaling?
- Why we should use ENUM instead of String ?
- Why do we need all this SGML stuff? Why not jus...
- Why do we need extern “C”{ #include <foo.h> } in C++?
- Why do we need another Big data processing engine, like SPARK ?
- [gist]Why do we still need Evernote since there is awesome gist.github.com
- rtmp NetConnection 状态
- Android代码实现WiFi连接
- Opencv2.4.9源码分析——Random Trees
- 1081. Rational Sum (20) PAT
- Hibernate-Criteria查询(3)DetachedCriteria构造查询条件、命名查询、原生SQL、调用存储过程(使用JDBC)
- BuildYourOwnLisp Why we need enum
- JAVA概述
- 深入理解RunLoop
- HTML 基础
- RSYNC数据同步备份
- makefile之变量高级用法
- sqlserver2008r2数据库使用触发器对sa及其他数据库账号访问进行IP限制
- 数列求和
- MyEclipse识别JPEGImageEncoder