三九宝宝网宝宝教育教学论文

C中的枚举类型怎么使用

02月22日 编辑 39baobao.com

[C语言函数模板中的非类型参数问题]这些都是C++的玩意 T min( T (&arr)[size] ); //T (&arr)[size] arr是个数组的引用, 如果去掉括号,就变成引用的数组,而引用的数组是不存在的,改成T*就成了第二种定义了 用引用...+阅读

C++中的枚举类型使用:

1、枚举enum的用途 写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, rainy等等。 更常见的,打开一个文件可能有三种状态:input, output和append. 典型做法是,对应定义3个常数,即: const int input = 1; const int output = 2; const int append = 3; 然后,调用以下函数: bool open_file(string file_name, int open_mode); 比如, open_file("Phenix_and_the_Crane", append); 这种做法比较简单,但存在许多缺点,主要的一点就是无法限制传递给open_file函数的第2个参数的取值范围,只要传递int类型的值都是合法的。(当然,这样的情况下的应对措施就是在open_file函数内部判断第二个参数的取值,只有在1,2,3范围内才处理。) 使用枚举能在一定程度上减轻这种尴尬(注1),它不但能实现类似于之前定义三个常量的功能,还能够将这三个值组合起来成为独一无二的组。例如: enum open_modes {input = 1, output, append}; 以上定义了open_modes为枚举类型enumeration type。每一个命名了的枚举都是唯一的类型,是一个类型标示器type specifier。例如,我们可以重新写一个open_file函数: bool open_file(string file_name, open_modes om); 在open_modes枚举中,input, output, append称为枚举子enumerator, 它们限定了open_modes定义的对象的取值范围。这个时候,调用open_file函数和之前的方法还是一模一样: open_file("Phenix_and_the_Crane", append); 但是,如果传递给open_file的第二个参数不是open_modes枚举类型值的话(注1),那么编译器就会识别出错误;就算该参数取值等价于input, output, append中的某个, 也一样会出错哦!例如: open_file("Phenix_and_the_Crane", 1);

2、枚举的定义 一个枚举是一个类型,可以保存一组由用户刻画的值。定义之类,枚举的使用很像一个整数类型。 枚举的定义具有以下形式,即以关键词enum开头,接着一个可选的枚举名,下来是由大括号{}包含着一个由逗号分隔的枚举子列表enumerators list: enum [enumeration name] {enumerator1[=value1], enumerator2[=value2], ...};

3、枚举子的类型和取值 枚举子的类型就是它所在的那个枚举,例如前面说到的open_modes枚举中,input,output和append等枚举子的类型都是open_modes。这种做法,其实是为了赋予用户和编译器一些有关该变量拟议中的用途的提示。 默认下,第一个枚举子被赋值0,接下来的枚举子取值是前面一个枚举子的取值+1,例如: enum weather {sunny, cloudy, rainy, windy}; 其中 sunny == 0, cloudy == 1, rainy == 2, windy == 3; 以上是默认情况,有时候我们希望显式地指定某个枚举子的值,那么会出现什么情况呢?看看: enum some_fruit {apple = 3, orange, banana = 4, bear}; 好了,apple == 3, banana == 4; 那么orange和bear呢?记得前面说过一句,默认下”接下来的枚举子取值是前面一个枚举子的取值+1“。既然这两个枚举子没有显式赋值,那么就按照默认规则办事,所以 orange == 4, bear == 5. 从这个例子也可以看出,同一枚举中枚举子的取值不需要唯一。这样有什么用处呢?下面是个简单的例子: enum some_big_cities { Guangzhou = 4, Shenzhen = 4, Hongkong = 4, Shanghai = 2, Beijing = 3, Chongqi = 3 }; 以上简单地按区域,将五个城市按照华南(4),华东(2), 华北(3)的几个城市分类了。

4、枚举变量的定义、初始化和赋值 既然每个枚举都是一个类型,那么由这个类型自然可以声明变量,例如,由前面定义的some_big_cities: some_big_cities where_I_am; 需要注意的是,在声明where_I_am时没有初始化,如果这时打印where_I_am的值: enum some_big_cities { Guangzhou = 4, Shenzhen = 4, Hongkong = 4, Shanghai = 2, Beijing = 3, Chongqi = 5}; int main(void) { some_big_cities wh; cout

以下为关联文档:

C语言转换类型运算符怎么用不是有强制类型转换吗? 强制类型转换 强制类型转换 当操作数的类型不同,而且不属于基本数据类型时,经常需要强制类型转换,将操作数转化为所需要的类型。强制类型转换具有两种形...

c语言中的word和byte是什么数据类型在C语言里没有word、byte数据类型。 word一般叫作“字”:系统硬件有关,数据总线为16位,则1word为2byte;32位时,1word为4byte; byte表示一个字节是8位二进制数,对应C的unsignedcha...

C语言不定参数个数在自定义函数中的使用#include <stdio.h> #include <stdarg.h> void f1(int a,...) { va_list va; va_start(va,a); int b = va_arg(va,int); int *c = va_arg(va, int *); printf("%d %d %d\n",a,...

C语言中关于枚举类型1.enum 枚举的定义 枚举类型定义的一般形式为: enum 枚举名{ 枚举值表 };在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。 例如: 该枚举名为weekday,枚举值共有7个,即一...

给个枚举类型的程序 c语言#include<stdio.h> /* 定义枚举类型 */ enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; void main() { /* 使用基本数据类型声明变量,然后对变量赋值 */ int x, y, z; x...

c语言中什么是枚举类型enum给个例子typedef enum { TEST_ENUM_ZERO, TEST_ENUM_FRIST, TEST_ENUM_END }TEST_ENUM; TEST_ENUM test; test就是一个枚举类型的变量,其值可以是TEST_ENUM_ZERO,TEST_ENUM_FRIST,TES...

c语言解释一下枚举类型如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始, 顺 次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后, 其后的成员按依次 加1的规则确定其值。 例如下列枚...

什么是c语言里面的枚举类型枚举是用标识符表示的整型常数集合,这些常数是该类型变量可取的合法值,这些标识符称为枚举常量。 定义:enum&lt;枚举名>{&lt;标识符1>,&lt;标识符2>...&lt;标识符n>}; 比如enum wee...

C语言中的POW函数怎么使用使用方法: # include//这个。其实没有也可以。 double x,y,z;//自己按需赋值。【1】 z=pow(x,y); printf(“%lf\n【2】”,z【3】);//可以根据想输出几位,比如说输出一位小数%.1lf...

推荐阅读
图文推荐