枚举的简短,枚举变量类型可以在C(ANSI,而不是原始K&R)、C++和C*中找到。其思想是使用具有受限值集的类型,而不是使用int来表示一组值。
例如,如果我们使用彩虹的颜色
如果枚举不存在,可以使用#define(在C中)或C++/C中的const来指定这些值。如
问题是整数比颜色多得多。如果violet的值为7,并且程序为一个变量指定了一个值15,那么它显然是一个bug,但可能不会被检测到,因为15是int的有效值。
枚举是用户定义的类型,由一组名为枚举数的命名常量组成。彩虹的颜色将按如下方式绘制:
现在在内部,编译器将使用一个int来保存这些值,如果没有提供值,红色将是0,橙色将是1等等。
关键是彩虹颜色是一种类型,只有相同类型的其他变量可以分配给它。C是更容易去的(即不严格类型化),但是C++和C ^不允许赋值,除非强制使用强制转换。
您不必拘泥于这些编译器生成的值,您可以将自己的整数常量分配给它们,如下所示。
让蓝色和靛蓝具有相同的值并不是一个错误,因为枚举数可能包含诸如猩红和深红之类的同义词。
在C语言中,变量声明前面必须有单词enum,如中所示
但是,在C++中,不需要雨伞颜色,因为它是一种不需要枚举类型前缀的不同类型。
在C#中,通过类型名称访问值,如中所示
使用枚举可以提高抽象级别,让程序员思考值的含义,而不必担心它们是如何存储和访问的。这减少了错误的发生。
这里有一个例子。我们有一套红、黄、绿三个灯泡的交通灯。在英国,交通灯的顺序在这四个阶段发生变化。
通过写入控制字节的底部三位来控制灯光。它们在下面以二进制形式以位模式排列,其中RYG表示三位。如果R为1,则红灯亮等。
在这种情况下,很容易看出上述四种状态对应于值4=红色开启、6=红色+黄色开启、1=绿色开启和2=黄色开启。
具有此功能
在C++和C语言中,我们需要创建一个类,然后重载操作符,允许或处理类型的交通灯。
通过使用枚举,我们可以防止分配给灯泡控制字节的其他位出现问题。可能是其他一些位控制自检或“绿色通道”开关。在这种情况下,允许在正常使用中设置这些位的错误可能会造成严重破坏。
当然,我们会屏蔽SetTrafficlights()函数中的位,这样无论传入什么值,都只会更改底部的三位。
枚举有以下好处:
关键区别–值类型与参考类型 一种编程语言被设计用来给计算机发出执行任务的指令。该程序可以操作包含数字、字符和字符串的数据,并向用户生成信息。用特定编程语言编写的一系列指令就是一个程序。在C#等编程语言...
...DavidPostill将为我们****。首先,红砖: Early computers* ran one program at a time and programs loaded directly from paper tape with holes punched in it (for example). You would program the earliest computers* by setting a large set of on-off switches. Colossus Atlas Manchester *I am us...
...ft Windows, Microsoft needed to write a compatibility layer so that 32-bit programs would still work on the new 64-bit system. This is why some programs are often installed to a folder called Program Files (x86), where x86 means “32-bit”. Compatibility layers tend to be more intimate with the...
...题 超级用户读者DragonLord很好奇为什么大多数操作系统和编程语言都是从零开始计算的。他写道: Computers traditionally tally numerical values starting from zero. For example, arrays in C-based programming languages start from index zero. What historical reas*** exis...
...开发也相应增长。但是这些脚本语言到底是什么?它们与编程语言有什么不同?随着操作系统的发展,系统任务变得更加复杂,需要多个文件和系统实用程序来完成任务。突然出现了对一类高级语言的需求,这些语言可以执行OS...
身体语言的主要区别(main difference body language) vs. 副语言(paralanguage) 非言语交际是无需言语的信息交流。肢体语言和副语言是非言语交际的两个重要范畴。肢体语言是指一个人的手势、面部表情和姿势。副语言是指言语的非词汇...
在编程语言中,翻译器和解释器的主要区别在于,翻译器是一种将代码从一种编程语言转换为另一种编程语言的软件,而解释器是一种将高级编程语言转换为机器语言的翻译器。 计算机程序是计算机执行任务的一组指令。它由...
...一个保存数据的内存位置。 C是由dennisritchie开发的结构化编程语言。它有各种编程结构,如循环、函数和指针。定义常量和变量是编写程序的初始步骤。常量是指一个固定值,定义后不能更改。另一方面,变量是标识特定内存位...
脚本语言和编程语言的主要区别在于,用脚本语言编写的源代码使用解释器转换为机器代码,而用编程语言编写的源代码使用编译器或解释器转换为机器代码。 脚本语言是一种在一个文件中包含一系列命令的计算机语言,可以...
标记语言和编程语言之间的主要区别在于,标记语言定义了一组规则,用于以人类可读和机器可读的格式对文档进行编码,而编程语言提供了一组命令和语法,可用于编写用户理解的计算机程序计算机。 标记语言(markup language...