您现在的位置是:首页 > 正文

c语言遍历枚举,枚举类型的使用及进行循环

2024-02-01 02:32:44阅读 1

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

1. 枚举的定义枚举类型定义的一般形式为:

enum 枚举名{ 枚举值表 }; 在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。

例如: 该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。

2. 枚举变量的说明 如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。

设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:

enum weekday{ sun,mou,tue,wed,thu,fri,sat };

enum weekday a,b,c;

或者为: enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;

或者为: enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;

枚举类型在使用中有以下规定: 1. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。

例如对枚举weekday的元素再作以下赋值: sun=5; mon=2; sun=mon; 都是错误的。

2. 枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,…,sat值为6。

【例11.10】

main(){ enum weekday { sun,mon,tue,wed,thu,fri,sat } a,b,c; a=sun; b=mon; c=tue; printf("%d,%d,%d",a,b,c); }

说明: 只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。

如: a=sum; b=mon; 是正确的。而: a=0; b=1; 是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换。

如: a=(enum weekday)2; 其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于: a=tue;

还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

//此代码在VS中编不过去,枚举类型不能做自增操作

//在GCC中据说能编过去,没试过

main(){

enum body

{ a,b,c,d } month[31],j;

int i;

j=a;

for(i=1;i<=30;i++){

month[i]=j;

j++; //在VS中出错

if (j>d) j=a;

}

for(i=1;i<=30;i++){

switch(month[i])

{

case a:printf(" %2d %c/t",i,'a'); break;

case b:printf(" %2d %c/t",i,'b'); break;

case c:printf(" %2d %c/t",i,'c'); break;

case d:printf(" %2d %c/t",i,'d'); break;

default:break;

}

}

printf("/n");

}

若想在VS中编译,请看下面代码:

enum body

{ a,b,c,d } month[31],j;

int i;

j=a;

for(i=1;i<=30;i++)

{

month[i]=j;

j = (enum body)(j + 1); //这样改下即可,强制转换下

if (j>d) j=a;

}

for(i=1;i<=30;i++)

{

switch(month[i])

{

case a:printf(" %2d %c/t",i,'a'); break;

case b:printf(" %2d %c/t",i,'b'); break;

case c:printf(" %2d %c/t",i,'c'); break;

case d:printf(" %2d %c/t",i,'d'); break;

default:break;

}

}

printf("/n");

网站文章

  • Macos下跑通全景视频开源项目fraunhoferhhi/omaf.js

    Macos下跑通全景视频开源项目fraunhoferhhi/omaf.js

    项目地址:https://github.com/fraunhoferhhi/omaf.js.git 1. 安装nginx brew install nginx 2. 下载代码 mkdir ~/omaf...

    2024-02-01 02:32:38
  • vue-element-admin 和 python django 前后端分离 开撸(新手学习,高手指点) 热门推荐

    vue-element-admin 和 python django 前后端分离 开撸(新手学习,高手指点) 热门推荐

    一、python django 项目建立 1、django安装方法:运行命令:pip3 install django。(pip3和python3安装方法请自行百度); 2、创建django项目   在linux等命令行界面下,使用django提供的命令 django-admin startproject back 注:back你的项目名。创建之后的目录结构如图红框: 可以运...

    2024-02-01 02:32:12
  • db2 export CSV文件 中文乱码解决

    若中文乱码,则在导出的语句中加入codepage参数即可,如下 db2 "export to data819.csvof del modified by codepage=1208  select * from tab1"    db2 "export to data1386.csvof del modified by codepage=1383 select * from tab1"...

    2024-02-01 02:32:06
  • 用科技号脉 九安医疗缔造数字健康生活

    用科技号脉 九安医疗缔造数字健康生活

    2013-01-16 来源: 人民网(北京)  九安医疗缔造数字健康生活&quot; style=&quot;margin:0px; padding:0px; border:0px; list-style:none&quot;&gt; 人民网·天津视窗1月16日电: 企业创新理念   与移动互联终端设备融合,打造数字化的健康生活,天津九安医疗电子股份有限公司正以数字化

    2024-02-01 02:32:01
  • 命令行工具: logcat 使用详解

    Logcat 是一个命令行工具,用于转储系统消息日志,包括设备抛出错误时的堆栈轨迹,以及从您的应用中使用Log类写入的消息。 本页面介绍了命令行 Logcat 工具,但在 Android Studio 中,您也可以从Logcat窗口查看日志消息。要了解如何在 Android Studio 中查看和过滤日志,请参阅使用 Logcat 写入和查看日志。 命令行语法 要通过 ...

    2024-02-01 02:31:53
  • 史上最全redis教程

    史上最全redis教程

    个人最近总结了一下redis的知识如下,可能有的东西写的比较杂,只是为了自我总结一下。redis简介什么是redisRedis的的是完全开源免费的,遵守BSD协议,是一个高性能的键值数据库。是当前最热门的的的NoSql数据库之一,也被人们称为数据结构服务器。Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。以设置和获取一个256字节字符串为例,它的读取速度可高...

    2024-02-01 02:31:24
  • ElementUI走马灯案例

    这种ElementUI走马灯案例 ----------vue框架操作1.先使用npm安装 npm i element-ui -S2.在main.js中引入Element,一般引入这三行就可以import ElementUI from 'element-ui';import 'element-ui/lib/theme-chalk/index.css';Vue....

    2024-02-01 02:31:17
  • memcached-session-manager配置

    memcached-session-manager配置

    声明:本篇文章是根据memcached-session-manager官方配置方法wiki页面翻译整理,关于memcached-session-manager的介绍,具体参见官网:http://code.google.com/p/memcached-session-manager/,也可以参考:http://gong1208.iteye.com/blog/1596120 Introduc...

    2024-02-01 02:31:10
  • 不要再用where 1=1了,有更好的写法

    不要再用where 1=1了,有更好的写法

    背景 刚入行的同学,看到在SQL语句中出现where 1 = 1这样的条件可能会有所困惑,而长时间这样使用的朋友可能又习以为常。 那么,你是否还记得当初为什么要这样写?是否有性能问题?有没有更好的写法...

    2024-02-01 02:30:41
  • 如何在 JavaScript 中获取当前网页的协议和页面路径?

    在这个例子中,让我们了解页面的当前URL是如何存储在下面代码的变量“result”中的。文档对象的“URL”属性(其中包含有关当前 URL 的数据)用于获取当前 URL。“URL”属性返回一个字符串,...

    2024-02-01 02:30:34