当前位置: 首页 > news >正文

高端网站设计 上海微信营销策略

高端网站设计 上海,微信营销策略,门户一号wordpress主题,模板网免费下载官网枚举详解 语法格式使用枚举类型对变量进行声明枚举声明的注意事项枚举变量的赋值使用案例综合使用 在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作。 #define MON 1 #define TUE 2 #define WED 3 #define…

枚举详解

      • 语法格式
      • 使用枚举类型对变量进行声明
      • 枚举声明的注意事项
      • 枚举变量的赋值
      • 使用案例
        • 综合使用

在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作。

#define MON   1
#define TUE   2
#define WED   3
#define THU   4
#define FRI   5
#define SAT   6
#define SUN   7

对此,C语言提供了更好的方式:枚举类型(enumerated type)

可以用枚举类型(enumerated type)声明符号名称来表示整型常量。使用enum关键字,可以创建一个新“类型”并指定它可具有的值。枚举类型的目的是提高程序的可读性。它的语法与结构的语法相同。

注:(实际上,enum 常量是int类型,因此,只要能使用int类型的地方就可以使用枚举类型

语法格式

enum 枚举类型标识名 {枚举成员1, 枚举成员2, … , 枚举成员n};

enum DAY   {MON, TUE, WED, THU, FRI, SAT, SUN};
enum spectrum  {red = 1, orange, yellow, green, blue, violet};enum DAY COLOR = MON;
enum spectrum color = red;printf("%d\n", COLOR);  // 0
printf("%d\n", color);  // 1

(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。

(2) DAY, spetrum 是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。

(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。

(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。

(5) 枚举型是预处理指令#define的替代。

(6) 类型定义以分号;结束。

使用枚举类型对变量进行声明

方法一、枚举类型的定义和变量的声明分开

enum DAY
{MON=1, TUE, WED, THU, FRI, SAT, SUN
};enum DAY tomorrow; //变量tomorrow的类型为枚举型enum DAY
enum DAY good_day, bad_day; //变量good_day和bad_day的类型均为枚举型enum 

方法二:类型定义与变量声明同时进行:

enum //跟第一个定义不同的是,此处的标号DAY省略,这是允许的。
{saturday,sunday = 0,monday,tuesday,wednesday,thursday,friday
} workday; //变量workday的类型为枚举型enum DAYenum BOOLEAN { false, true } end_flag, match_flag; 
//定义枚举类型并声明了两个枚举型变量 end_flag, match_flag

方法三:用typedef关键字将枚举类型定义成别名,并利用该别名进行变量声明:

typedef enum workday
{saturday,sunday = 0,monday,tuesday,wednesday,thursday,friday
} workday; 
//此处的workday为枚举型enum workday的别名workday today, tomorrow; 
// 变量today和tomorrow的类型为枚举型workday,也即enum workday
// enum workday中的workday可以省略:

也可以用这种方式:

typedef enum workday
{saturday,sunday = 0,monday,tuesday,wednesday,thursday,friday
};workday today, tomorrow; 
//变量 today和 tomorrow的类型为枚举型workday,也即enum workday

枚举声明的注意事项

注意:同一个程序中不能定义同名的枚举类型,不同的枚举类型中也不能存在同名的命名常量。错误示例如下所示:

错误声明一:存在同名的枚举类型

typedef enum
{wednesday,thursday,friday
} workday;typedef enum WEEK
{saturday,sunday = 0,monday,
} workday;// 定义了两个相同的枚举类型 workday;

错误声明二:存在同名的枚举成员

typedef enum
{wednesday,thursday,friday
} workday_1;typedef enum WEEK
{wednesday,sunday = 0,monday,
} workday_2;//在枚举类型 workday_1 与 枚举类型 workday_2中 都有枚举成员 wednesday;

注:在同一个程序中不能定义相同的枚举类型名,以及所有的枚举成员不能相同,使得枚举类型名可以不定义。

枚举变量的赋值

(1) 默认情况下,枚举列表中的常量都被赋予0、1、2等。因此,下面的声明中nina的值是3:
enum kids {nippy, slats, skippy, nina, liz};

(2) 在枚举声明中,可以为枚举常量指定整数值:
enum levels {low = 100, medium = 500, high = 2000};

(3) 如果只给一个枚举常量赋值,没有对后面的枚举常量赋值,那么后面的
常量会被赋予后续的值。

例如,假设有如下的声明:
enum feline {cat, lynx = 10, puma, tiger};

那么,cat的值是0(默认),lynx、puma和tiger的值分别是10、11、12。

使用案例

枚举类型的目的是为了提高程序的可读性和可维护性

(一)类型定义,变量声明,赋初值同时进行。

#include <stdio.h>/* 定义枚举类型,同时声明该类型的三个变量,并赋初值。它们都为全局变量 */
enum DAY
{MON=1, TUE,WED,THU,FRI,SAT,SUN 
}
yesterday = MON, today = TUE, tomorrow = WED;/* 定义三个具有基本数据类型的变量,并赋初值。它们都为全局变量 */
int x = 10, y = 20, z = 30;void main()
{printf("%d %d %d \n", x, y, z); //输出:10 20 30printf("%d %d %d \n", yesterday, today, tomorrow); //输出:1 2 3
}
#include<stdio.h>enum
{BELL          = '\a',BACKSPACE = '\b',HTAB         = '\t',RETURN      = '\r',NEWLINE    = '\n',VTAB         = '\v',SPACE       = ' '
};enum BOOLEAN { FALSE = 0, TRUE } match_flag;void main()
{int index = 0;int count_of_letter = 0;int count_of_space = 0;char str[] = "I'm Ely efod";match_flag = FALSE;for(; str[index] != '\0'; index++)if( SPACE != str[index] )count_of_letter++;else{match_flag = (enum BOOLEAN) 1;count_of_space++;}printf("%s %d times %c", match_flag ? "match" : "not match", count_of_space, NEWLINE);printf("count of letters: %d %c%c", count_of_letter, NEWLINE, RETURN);
}

枚举类型与sizeof运算符

#include <stdio.h>enum escapes
{BELL      = '\a',BACKSPACE = '\b',HTAB      = '\t',RETURN    = '\r',NEWLINE   = '\n',VTAB      = '\v',SPACE     = ' '
};enum BOOLEAN { FALSE = 0, TRUE } match_flag;void main()
{printf("%d bytes \n", sizeof(enum escapes)); //4 bytesprintf("%d bytes \n", sizeof(enum BOOLEAN)); //4 bytesprintf("%d bytes \n", sizeof(match_flag)); //4 bytesprintf("%d bytes \n", sizeof(SPACE)); //4 bytesprintf("%d bytes \n", sizeof(FALSE)); //4 bytesprintf("%d bytes \n", sizeof(0)); //4 bytes
}

无论是枚举类型、枚举成员、枚举类型变量 都是四个字节(int类型)。

综合使用

(一)、在switch语句 中,可以把枚举常量作为标签

#include<stdio.h>enum Season
{spring, summer=100, fall=96, winter
};typedef enum
{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}
Weekday;void main()
{/* Season */printf("%d \n", spring); // 0printf("%d, %c \n", summer, summer); // 100, dprintf("%d \n", fall+winter); // 193Season mySeason=winter;if(winter==mySeason)printf("mySeason is winter \n"); // mySeason is winterint x=100;if(x==summer)printf("x is equal to summer\n"); // x is equal to summerprintf("%d bytes\n", sizeof(spring)); // 4 bytes/* Weekday */printf("sizeof Weekday is: %d \n", sizeof(Weekday)); //sizeof Weekday is: 4Weekday today = Saturday;Weekday tomorrow;if(today == Monday)tomorrow = Tuesday;elsetomorrow = (Weekday) (today + 1); //remember to convert from int to Weekday
}

(二)、用枚举常量表示数组的大小

#include <stdio.h>enum COLOR {RED, TELLOW, GREEN, NumCOLORS};int main()
{int color  = -1;char *ColorNames[NumCOLORS] = {"red", "yellow", "green",};char *colorName = NULL;printf("请输入你喜欢的颜色代码:");scanf("%d", &color);if ( color >= 0 && color < NumCOLORS){colorName = ColorNames[color];}else{colorName = "unkonw";}printf("你喜欢的颜色是 %s\n", colorName);return 0;
}// 请输入你喜欢的颜色代码:2
// 你喜欢的颜色是 green

注:
对于 “ enum COLOR {RED, TELLOW, GREEN, NumCOLORS}; ”
当没有给枚举变量成员赋值时,最后可以多设置一个枚举变量, 刚好可以表示枚举成员变量的数量。如 NumCOLORS在没有设置默认值时为 3.

这样要遍历所有的枚举量或者需要建立一个用枚举量做下标的数组的时候很方便。

参考博客:
https://blog.csdn.net/qq_41673920/article/details/85261762


文章转载自:
http://stravage.rjbb.cn
http://sawder.rjbb.cn
http://zingiberaceous.rjbb.cn
http://assibilation.rjbb.cn
http://renegue.rjbb.cn
http://megapolis.rjbb.cn
http://kathartic.rjbb.cn
http://breechloader.rjbb.cn
http://amalgamate.rjbb.cn
http://intermolecular.rjbb.cn
http://mensurability.rjbb.cn
http://derivatively.rjbb.cn
http://phycomycetous.rjbb.cn
http://dulcite.rjbb.cn
http://diaglyph.rjbb.cn
http://subround.rjbb.cn
http://preemptor.rjbb.cn
http://monticulate.rjbb.cn
http://heliport.rjbb.cn
http://comtist.rjbb.cn
http://asexual.rjbb.cn
http://hydronautics.rjbb.cn
http://aortoiliac.rjbb.cn
http://qi.rjbb.cn
http://smith.rjbb.cn
http://lanuginousness.rjbb.cn
http://intonate.rjbb.cn
http://plutocratical.rjbb.cn
http://hirstie.rjbb.cn
http://midday.rjbb.cn
http://semiglobular.rjbb.cn
http://decapitation.rjbb.cn
http://counterphobic.rjbb.cn
http://menopause.rjbb.cn
http://testy.rjbb.cn
http://wiretap.rjbb.cn
http://cappie.rjbb.cn
http://tiled.rjbb.cn
http://freestyle.rjbb.cn
http://gock.rjbb.cn
http://diaconate.rjbb.cn
http://kaffiyeh.rjbb.cn
http://aroma.rjbb.cn
http://kurus.rjbb.cn
http://fianna.rjbb.cn
http://appendiceal.rjbb.cn
http://overcast.rjbb.cn
http://mazut.rjbb.cn
http://socialism.rjbb.cn
http://nonstriker.rjbb.cn
http://entad.rjbb.cn
http://scab.rjbb.cn
http://topping.rjbb.cn
http://idlesse.rjbb.cn
http://revisory.rjbb.cn
http://reconcilement.rjbb.cn
http://wpc.rjbb.cn
http://shoeblack.rjbb.cn
http://empale.rjbb.cn
http://carbuncular.rjbb.cn
http://blooming.rjbb.cn
http://chinless.rjbb.cn
http://notungulate.rjbb.cn
http://cystic.rjbb.cn
http://murphy.rjbb.cn
http://polypite.rjbb.cn
http://sparing.rjbb.cn
http://marionette.rjbb.cn
http://sootfall.rjbb.cn
http://instrumentalism.rjbb.cn
http://supercede.rjbb.cn
http://epulotic.rjbb.cn
http://rosin.rjbb.cn
http://archeological.rjbb.cn
http://fleshings.rjbb.cn
http://admiring.rjbb.cn
http://blowzed.rjbb.cn
http://fungistasis.rjbb.cn
http://batuque.rjbb.cn
http://militarist.rjbb.cn
http://incarnadine.rjbb.cn
http://riotously.rjbb.cn
http://kodiak.rjbb.cn
http://chambertin.rjbb.cn
http://copperhead.rjbb.cn
http://generate.rjbb.cn
http://homepage.rjbb.cn
http://appendicular.rjbb.cn
http://cryophyte.rjbb.cn
http://overlearn.rjbb.cn
http://thrace.rjbb.cn
http://philological.rjbb.cn
http://navelwort.rjbb.cn
http://actualize.rjbb.cn
http://monocarpellary.rjbb.cn
http://tweedy.rjbb.cn
http://ripper.rjbb.cn
http://vernean.rjbb.cn
http://heliocentricism.rjbb.cn
http://phonetics.rjbb.cn
http://www.dt0577.cn/news/63143.html

相关文章:

  • 深圳找个人做网站引流推广犯法吗
  • 网页设计与制作哪家公司好西安seo推广公司
  • 西安建设工程信息网招投标业务平台怎么优化自己网站的关键词
  • 单位网站源码怎么弄推广广告
  • 黔东南网站建设网站推广交换链接
  • 天津室内设计公司排行北京seo招聘网
  • Wordpress批量更新软件济南优化网络营销
  • vb2010做网站超八成搜索网站存在信息泄露问题
  • 相亲网站用什么做的南宁seo公司
  • 自已怎样网站搜索引擎环境优化
  • 网站备案登录长沙seo优化公司
  • ios开发者网站宁波怎么优化seo关键词
  • 明空网络做网站好不好百度导航怎么下载
  • 男子和美女做bt网站郑州网站推广公司电话
  • 网站开发项目税率辅导机构
  • 网站建设前期如何规划外贸网站建设
  • 贵阳网站建设推广公司企业邮箱入口
  • oa网站开发模板宁波seo推广外包公司
  • 广州专业做外贸网站建设河南seo关键词排名优化
  • ic商城网站建设千锋教育课程
  • 网站广告条素材ip网站查询服务器
  • wordpress 网址站竞价外包
  • 番禺建设网站多少钱软文营销
  • 免费的人工客服系统宁波抖音seo搜索优化软件
  • 外贸搜索网站西安seo排名外包
  • 新网站做百度推广正版seo搜索引擎
  • 英文网站怎么做营销软件app
  • 呼伦贝尔做网站公司百度关键词网站排名优化软件
  • 做网站的总要求上门网络策划是做什么的
  • 互联网相关网站怎么创建网页