h5网页制作平台seo教程大秦英扬
h5网页制作平台,seo教程大秦英扬,我要安装百度,福田蒙派克e参数配置参考#xff1a;C语言的枚举类型#xff08;Enum) 地址#xff1a;https://blog.csdn.net/aliyonghang/article/details/123615803?spm1001.2014.3001.5502 在实际编程中#xff0c;有些数据的取值往往是有限的#xff0c;只能是非常少量的整数#xff0c;并且最好为每个… 参考C语言的枚举类型Enum) 地址https://blog.csdn.net/aliyonghang/article/details/123615803?spm1001.2014.3001.5502 在实际编程中有些数据的取值往往是有限的只能是非常少量的整数并且最好为每个值都取一个名字以方便在后续代码中使用比如一个星期只有七天一年只有十二个月一个班每周有六门课程等。
以每周七天为例我们可以使用#define命令来给每天指定一个名字(宏替换)
#include stdio.h#define Mon 1#define Tues 2#define Wed 3#define Thurs 4#define Fri 5#define Sat 6#define Sun 7int main(){int day;scanf(%d, day);switch(day){case Mon: puts(Monday); break;case Tues: puts(Tuesday); break;case Wed: puts(Wednesday); break;case Thurs: puts(Thursday); break;case Fri: puts(Friday); break;case Sat: puts(Saturday); break;case Sun: puts(Sunday); break;default: puts(Error!);}return 0;}运行结果
输入5输出Friday#define命令虽然能解决问题但也带来了不小的副作用导致宏名过多代码松散看起来总有点不舒服。C语言提供了一种枚举Enum类型能够列出所有可能的取值并给它们取一个名字。
枚举类型的定义形式为
enum typeName{ valueName1, valueName2, valueName3, ...... };enum是一个新的关键字专门用来定义枚举类型这也是它在C语言中的唯一用途typeName是枚举类型的名字valueName1, valueName2, valueName3, …是每个值对应的名字的列表。注意最后的;不能少。
例如列出一个星期有几天
enum week{ Mon, Tues, Wed, Thurs, Fri, Sat, Sun };可以看到我们仅仅给出了名字却没有给出名字对应的值这是因为枚举值默认从 0 开始往后逐个加 1递增也就是说week 中的 Mon、Tues … Sun 对应的值分别为 0、1 … 6。
我们也可以给每个名字都指定一个值
enum week{ Mon 1, Tues 2, Wed 3, Thurs 4, Fri 5, Sat 6, Sun 7 };更为简单的方法是只给第一个名字指定值
enum week{ Mon 1, Tues, Wed, Thurs, Fri, Sat, Sun };这样枚举值就从 1 开始递增跟上面的写法是等效的。
枚举是一种类型通过它可以定义枚举变量
enum week a, b, c;也可以在定义枚举类型的同时定义变量
enum week{ Mon 1, Tues, Wed, Thurs, Fri, Sat, Sun } a, b, c;有了枚举变量就可以把列表中的值赋给它
enum week{ Mon 1, Tues, Wed, Thurs, Fri, Sat, Sun };enum week a Mon, b Wed, c Sat;或者
enum week{ Mon 1, Tues, Wed, Thurs, Fri, Sat, Sun } a Mon, b Wed, c Sat;【示例】判断用户输入的是星期几。
#include stdio.hint main(){enum week{ Mon 1, Tues, Wed, Thurs, Fri, Sat, Sun } day;scanf(%d, day);switch(day){case Mon: puts(Monday); break;case Tues: puts(Tuesday); break;case Wed: puts(Wednesday); break;case Thurs: puts(Thursday); break;case Fri: puts(Friday); break;case Sat: puts(Saturday); break;case Sun: puts(Sunday); break;default: puts(Error!);}return 0;}运行结果
输入4输出Thursday需要注意的两点是 枚举列表中的 Mon、Tues、Wed 这些标识符的作用范围是全局的严格来说是 main() 函数内部不能再定义与它们名字相同的变量。 Mon、Tues、Wed 等都是常量不能对它们赋值只能将它们的值赋给其他的变量。
枚举和宏其实非常类似宏在预处理阶段将名字替换成对应的值枚举在编译阶段将名字替换成对应的值。我们可以将枚举理解为编译阶段的宏。
对于上面的代码在编译的某个时刻会变成类似下面的样子
#include stdio.hint main(){enum week{ Mon 1, Tues, Wed, Thurs, Fri, Sat, Sun } day;scanf(%d, day);switch(day){case 1: puts(Monday); break;case 2: puts(Tuesday); break;case 3: puts(Wednesday); break;case 4: puts(Thursday); break;case 5: puts(Friday); break;case 6: puts(Saturday); break;case 7: puts(Sunday); break;default: puts(Error!);}return 0;}Mon、Tues、Wed 这些名字都被替换成了对应的数字。这意味着Mon、Tues、Wed 等都不是变量它们不占用数据区常量区、全局数据区、栈区和堆区的内存而是直接被编译到命令里面放到代码区所以不能用取得它们的地址。这就是枚举的本质。
case 关键字后面必须是一个整数或者是结果为整数的表达式但不能包含任何变量正是由于 Mon、Tues、Wed 这些名字最终会被替换成一个整数所以它们才能放在 case 后面。
枚举类型变量需要存放的是一个整数我猜测它的长度和 int 应该相同下面来验证一下
#include stdio.hint main(){enum week{ Mon 1, Tues, Wed, Thurs, Fri, Sat, Sun } day Mon;printf(%d, %d, %d, %d, %d\n, sizeof(enum week), sizeof(day), sizeof(Mon), sizeof(Wed), sizeof(int) );return 0;}运行结果
4, 4, 4, 4, 4
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92642.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!