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

枚举类型相关

枚举是一种用户定义的数据类型,用关键字enum以如下语法来声明:

eunm 枚举类型名字{名字0,名字1,....,名字n};

枚举类型名字通常不真的使用,要用的是在大括号里面的名字,因为他们就是常量符号,他们的类型只能是int,值则依次从0到n:

enum colors{red,yellow,green}; //创建三个常量:red==0,yellow==1,green==2

当需要一些可以排列起来的常量值时,定义枚举的意义就是给这些常量值写名字

例子:

include<stdio.h> enum color {red,yellow,green}; //申明了这样一个数据类型color,也就相当于int,float,char等等 void f(enum color c); //使用这种数据类型必须带上enum这个字,叫做color这种枚举类型 int main(void) { enum color t =red; //t是enum color类型的变量,值为red scanf("%d",&t); //当作int类型输入 f(t); return 0; } void f(enum color c) { printf("%d\n",c); //当作int类型输出 }

实际上C语言中enum就是int类型,所以每一个枚举变量是可以作为int类型输入输出

套路:自动计数的枚举 #include <stdio.h> enum COLOR {RED, YELLOW, GREEN, NumCOLORS}; //最后设置NumCOLORS计数,其值为前面枚举量个数 int main(int argc, char const *argv[]) { int color = -1; char *ColorNames [NumCOLORS] = //可以用NumCOLORS定义数组 { //也可以用NumCOLORS判断整数值是否在有效范围内 "red","yellow","green", //也可以用NumCOLORS进行遍历枚举量 }; char *colorName = NULL; printf("输入你喜欢的颜色的代码:"); scanf("%d", &color); if ( color >=0 && color < NumCOLORS) { colorName = ColorNames [color]; } else { colorName= "unknown"; } printf("你喜欢的颜色是%s\n",colorName); }

声明枚举量的时候可以指定值

#include<stdio.h> enum COLOR{RED=1,YELLOW,GREEN=5,NumCOLORS}; //RED赋值为1,其后面的枚举量(YELLOW)就依次加1,,为2,GREEN赋值为5,其后的NumCOLORS依次加1就为6 int main(int argc,char const *argc[]) { printf("code for GREEN is %d\n",GREEN); //输出5 }

枚举实际上只是int

即使给枚举类型的变量赋值不存在的整数,也没有任何报错或者警告

#include<stdio.h> enum COLOR{RED=1,YELLOW,GREEN=5,NumCOLORS}; int main(int argc,char const *argc[]) { enum COLOR color=0; printf("code for GREEN is %d\n",GREEN); //输出5 printf("and color is %d\n",color); //输出0,不报错 }
http://www.jsqmd.com/news/1092056/

相关文章:

  • 把历史对话作为提示词会怎样
  • 破解教育系统定制化难题:3个MeEdu Hook系统实战解决方案
  • 如何利用ReadCat阅读器打造纯净小说阅读体验:完整使用指南
  • 面试官挖坑:Gemini有2M上下文,Agent还要记忆干嘛?
  • AI是如何理解和生成代码的?
  • 文件上传漏洞攻防全解析:从原理到实战的Web安全必修课
  • 容器编排平台:调度算法与服务发现的机制
  • Strix Halo 芯片前瞻,端侧 AI 未来的硬件想象力
  • MPLS、IPLC与SD-WAN的技术定位与融合演进
  • 工业机器人供应商选型指南:如何评估技术口碑与产品线覆盖度?仙工智能给你答案
  • 解构工业级机器狗落地痛点:如何布局复杂工况下的跨形态控制底座?
  • 免费开源gerbv:你的PCB设计验证终极指南
  • 【招聘】嫉妒,是最被低估的猎头武器
  • TI MSPM0汽车MCU深度评测:低成本高集成度方案重塑车身电子设计
  • PHP AES-ECB加密完整实现:从原理到安全实践
  • 3步掌握SMUDebugTool:解锁AMD Ryzen处理器深度调试的完整方案
  • 从零到一:手把手教你用Elsevier cas-sc LaTeX模板完成投稿
  • 思科模拟器实战:二层与三层链路聚合的配置差异与排错指南
  • 魔珐星云SDK实战测评:重构数字人交互的底层逻辑
  • 微信聊天记录删了还能找回来?自带 3 个隐藏功能
  • 移动开发技术跨平台框架ReactNative与Flutter的比较
  • 性能基准测试对比,AMD GPU 在大 Batch 场景下的真实表现
  • Codex 桌面端新手使用教程
  • 计算机毕业设计之基于深度学习的苹果成熟度识别系统的设计与实现
  • SMUDebugTool终极指南:免费AMD Ryzen硬件调试工具快速上手
  • 俄罗斯OZON跨境运营流程及工具
  • HS2-HF Patch:Honey Select 2的终极增强解决方案
  • 20W 工业 AC-DC 模块电源硬件技术选型解析丨LD20-23B03R2 和钡特电源 AD20-23S03 全系列稳选型丨国产丨参数规格丨封装互通
  • 基于Matlab与STM32的串口数据可视化调试:从算法仿真到硬件验证
  • 物联网安全中的设备认证与固件保护