C基础-枚举类型-1-定义,赋值,使用

it2024-11-20  5

枚举类型

概念: 可以使用枚举类型,声明代表整数常量的符号名称。通过使用关键字enum,可以创建一个新“类型”并制定她可以具有的值。枚举类型的目的是提高程序的可读性。

enum 常量是int类型的,因此在使用int类型的任何地方都可以使用它。

定义:

/*

这个声明设置spectrum为标记名。

*/

enum spectrum { ​ red, ​ orange, ​ yellow, ​ green, ​ blue };

/*

这个声明,使得color成为enum spectrum类型的一个变量。

*/

enum spectrum color;

使用:

enum 常量。

上例中,red, orange等等 是枚举常量。

在使用整数常量的任何地方都能使用枚举常量。例如,在数组声明中可以把它们作为数组大小,在switch语句中,可用它们来作为标签。

enum 变量

color 是枚举变量, 相当于整数型变量(int c)。

color 的可能值是red, orange, yellow, 等等。

color = blue;

if (yellow == color)

…;

for(color = red; color <= blue;blue++)

…;

虽然枚举常量(如red和blue)是int类型,但是枚举变量可以是任意整数类型,前提是该整数类型可以储存枚举常量。例如,spectrum的枚举符范围是0~5,所以编译器可以用unsigned char来表示color变量。 顺带一提,C枚举的一些特性并不适用于C++。例如,C允许枚举变量使用++运算符,但是C++标准不允许。所以,如果编写的代码将来会并入C++程序,那么必须把上面例子中的color声明为int类型,才能C和C++都兼容。

默认值 默认情况下,枚举列表中的常量都被赋予0、1、2等。

指定值

在枚举声明中,可以为枚举常量指定整数值: enum levels {low = 100, medium = 500, high = 2000}; 如果只给一个枚举常量赋值,没有对后面的枚举常量赋值,那么后面的常量会被赋予后续的值。

例程:

/* 输入不同的颜色名称,输出关于这个颜色一条句子。 */

#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #define LEN 30 enum spectrum { red, orange, yellow, green, blue }; const char * colors[] = {"red","orange","yellow","green","blue"}; int main(void) { char choice[LEN]; enum spectrum color; bool color_is_find = false; puts("Enter a color (empty line to quit): "); while(NULL != gets(choice) && '\0' != choice[0]) //当有效输入的时候,进入while执行。 { for(color=red;color<=blue;color++) { if(0 == strcmp(choice, colors[color])) { color_is_find = true; break; } } if(color_is_find) { switch(color) { case red: puts("Apple is red."); break; case orange: puts("Oranges are orange."); break; case yellow: puts("Bananas are yellow."); break; case green: puts("The leaves are green."); break; case blue: puts("Sky is blue."); break; default: break; } } else { puts("Sorry i don't recognize this color."); } color_is_find = false; puts("Enter a color (empty line to quit);"); } puts("Bye."); return 0; } 运行结果: Enter a color (empty line to quit): red Apple is red. Enter a color (empty line to quit); yellow Bananas are yellow. Enter a color (empty line to quit); green The leaves are green. Enter a color (empty line to quit); orange Oranges are orange. Enter a color (empty line to quit); blue Sky is blue. Enter a color (empty line to quit); violet Sorry i don't recognize this color. Enter a color (empty line to quit); Bye.
最新回复(0)