a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 62|回复: 0

[LPI认证] C语言中的枚举类型及在Linux系统中的作用

[复制链接]
发表于 2012-8-4 12:13:19 | 显示全部楼层 |阅读模式
[点评:枚举一般用于定义一个集合,如色彩,星期等等,他提供了更加贴近实际的对对象的描述,方便了编程工作.]* w! T4 b6 j1 P' W# a& M
  下面简单介绍下C语言中的枚举类型和在Linux系统中的作用。1 u, ]9 J2 x0 b" a' z
  枚举是一个被命名的整型常数的集合, 枚举在日常生活中很常见。$ T* {8 h/ H& }8 T
  例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,SATURDAY, 就是一个枚举。
5 J' _5 p; y' u1 j  枚举的说明与结构和联合相似, 其形式为:% z  M$ U4 G3 u: u8 W0 F  p
  enum 枚举名{# ]$ b+ ]4 V& ?6 l1 J  J
  标识符[=整型常数],5 [6 P* ?, Z9 ^
  标识符[=整型常数],
7 D0 \( H; F; d3 j& @( t) U  ...4 ^7 }0 ~: W! s) `  `% f  _$ }; L
  标识符[=整型常数],
; O/ y& p6 H( t7 l+ q: G9 u8 K; D( v  } 枚举变量;/ S. E# N2 n0 s6 c0 o
  如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始, 顺; N  l9 U4 r: L/ Q# \
  次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后, 其后的成员按依次& W9 S! R, C% J: J7 {" V
  加1的规则确定其值。+ R; e, M% O: ^0 A
  例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。
6 G+ z7 C8 u+ b  enum string{x1, x2, x3, x4}x;$ G9 Q: `, ^/ b1 {
  当定义改变成:7 C3 h7 C. L2 g) T3 a
  enum string. w! d) i- l' Y% }
  {
- Q: g) X' ?( ^$ X% o  x1,. H: |7 W5 x! h7 O
  x2=0,
5 }) L2 o7 ~! a" o  x3=50,
8 B! x0 c) ]0 v, k  x4,* f* H% p1 i' ^" X  M; D
  }x;
& d' i. h/ L! I  则x1=0, x2=0, x3=50, x4=51; u# G! o! _" F/ x
  注意:
+ N" s- C* Y% G- @# _" c3 T5 O  1. 枚举中每个成员(标识符)结束符是",", 不是";", 最后一个成员可省略- w9 m5 y1 a# v& _0 y0 Y
  ","。
0 U% A1 l' j; o; N! x& W  2. 初始化时可以赋负数, 以后的标识符仍依次加1。
4 ]; l6 o* N) y) D8 W8 f  3. 枚举变量只能取枚举说明结构中的某个标识符常量。
& M' a% o8 y$ ~  例如:
. z( d8 V5 K! f7 Y" k( u  enum string' f! u0 O, ?% [  p9 k! I  E1 Y
  {
! X; b+ ^% K1 h8 f8 ]' v  x1=5,
  ~  m7 H: C) G8 ^! E: B  x2,
! ~- k4 c/ e8 M! Z, A  r  x3,6 t) W% @) n) L& \
  x4,5 D0 y8 A) }  g+ m
  };
* w$ u+ r" M' R+ L& A: x, P3 r  enum strig x=x3;: \2 L! R- A/ Y3 {+ j  U. ^
  此时, 枚举变量x实际上是7。* Y# g+ r( b; L6 R1 z
  enum 关键字在c中用的是比较多的,它常用来定义标记整型常量,你去看许多操作系统的源代码,都有用这个关键字来一次定义许多标记整型常量,其实它相当于定义一个整型常量的表,青年人网提示方便应用时查找。当然他的大部分功能都可以被宏定义代替,不过毕竟enum关键字定义的东东是支持类型检查的,可以用编译器来发现一些错误(enum定义的只能是整型的常量表)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-15 10:30 , Processed in 0.482671 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表