C言语 enum 枚举 (c言语是一种什么语言)
本文目录导航:
C言语 enum(枚举)
C言语中的枚举(enum)是优化代码可读性和繁复度的主要工具。
枚举准许你为一组预约义的整数值赋予更直观的称号,防止了少量冗余的#define定义。
它的基本定义格局如下:枚举的定义语法如下:enum 枚举名 {枚举元素1, 枚举元素2, ...};例如,一周有7天,经常使用枚举可以简化为:而非#define定义:enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN};枚举变量的自动值是0,后续元素值递增。
比如节令枚举:可以自定义元素值:enum season {spring, summer=3, autumn, winter};定义枚举变量有三种方式:1. 先定义类型再申明变量2. 同时定义类型和变量3. 省略类型名直接申明例如,将整数转换为枚举:将整数转换为枚举:enum day { saturday, sunday, monday, tuesday, wednesday, thursday, friday } workday; int a = 1; enum day weekend; weekend = (enum day) a;在C言语中,枚举理论被视为int或unsigned int类型,不支持直接遍历。
但可以经过条件解决成功局部枚举遍历。
在switch语句中,枚举可繁难地对应不同的状况:在switch中经常使用:enum color { red=1, green, blue }; ...总之,枚举是C言语中优化代码可读性和组织性的有力工具。
要深入学习编程,欢迎添加玛可瑞塔编程社区。
枚举类型与子界类型 谁教教我啊???
枚举类型与子界类型◆枚举类型定义枚举类型的普通格局为:type枚举类型标识符=(标识符1,标识符2,……,标识符n);var枚举类型变量表:枚举类型标识符;例如:type daystype=(sunday,tuesday,monday, wednesday,thursday,friday,saturday);varxq:daystype;注:枚举类型标识符室咱们自定义的枚举类型的名字,如xq。
括号中的标识符称为枚举元素,枚举类型标识符跟等号。
枚举元素只能是标识符,而不能是数值常量或字符常量。
例如以下的定义是失误的:typedaystype=(sun,mon,tue,wed,thu,fri,sat)枚举元素是标识符,不要把作为枚举元素的标识符视作变量名,它不能被赋值。
留意点:1、type在const与var之间;2、枚举值只能是标识符; 3、每个枚举值只能在一个枚举类型定义中产生一次性;4、枚举值是有序的,序号为0~n-1;例如:曾经定义daystype ord(sunday)=0,succ(sunday)=monday,pred(friday)=thursday枚举类型中的第一个元素没有前趋,最后一个元素没有后继。
Turbo Pascal不准许直接读写枚举值,所以枚举值的输入罕用case语句直接的输入。
枚举值的输入,则要逐一判别读入字符能否是枚举类型的标识符。
若是能力赋给枚举变量,否则就会出错。
例如:枚举值的输入 case xq ofsunday:write(sunday);monday:write(monday);tuesday:write(tuesday);wednesday:write(wednesday);thursday:write(thursday);friday:write(friday);saturday:write(saturday); end;例1:输入当天是星期几的序号,给当天和明日分枚举值,并输入明日是星期几。
算法:1.输入当天的序号;2.转换成当天的枚举值;3.求明日的枚举值;4.转换输入明日的枚举值;program todaytomorrow (input,output);var today,tomorrow:( sunday,monday,tuesday,wednesday,thursday,friday,saturday);number:integer;beginread(number); case number of{给当天枚举赋值} 0:today:=sunday; 1:today:=monday; 2:today:=tuesday; 3:today:=wednesday; 4:today:=thursday; 5:today:=friday; 6:today:=saturday;end;if today=Saturday {求明日的值} then tomorrow:=sunday else tomorrow:=succ(today);write(tomorrow is);{输入明日的值}case tomorrow of sunday:writeln(sunday);monday :writeln(monday);tuesday :writeln(tuesday);wednesday:writeln(wednesday);thursday:writeln(thursday);friday:writeln(friday);saturday:writeln(saturday);end; end.枚举类型也可以直接在var中定义:如:var today,tomorrow:(sunday,monday,tuesday,wednesday,thursday,friday,saturday);练习:1、下列枚举类型定义正确的是:a、type a1=(‘a’, ‘b’, ‘c’ ,‘d’ ,‘e’);b、type a2=(1,2,3,4,5);c、type a3=(class1,class2,class3);d、type a4=(red,blue,green,red);2、变量说明如下:vars1,s2:(red,blue,green,yellow);k:integer; 上方语句正确的是:a、k:=succ(red);b、read(s1,s2);c、s2:=green;d、writeln(s1,s2);◆子界类型 考试完结了,可以编写程序来计算全班同窗的总分敌对均数,有时输入的时刻会把分数打错,比如分数必定是0~100之间的,可是你输入了655,这是十分显著的失误,假设计算机能通知你错了,就好了。
Pascal可以经过之间类型变量来做到这一点。
如:typefs=0..100;子界类型是由整型、字符型、枚举型、布尔型的两个常量指定该类型的值域区间。
子界类型的方式:type 子界类型标识符=常量1..常量2;两个常量必定是同一种顺序类型。
例如:a..b,要求a<=b例如:type a=1..3;b=a..d;一个子界类型承袭它的常量类型的运算符和规范函数,常量类型相容的不同子界类型可以混合运算,可以赋值。
可以将子界类型的定义和变量的定义联合在一同。
⑴Typefs=10..200;zm=a.. p;Vara1,a2:fs;ch:zm;⑵定义子界类型:type age=1..100;month=1..12;letter=a.. r;day=(sunday,monday,tuesday,wednesday,thursday,friday,saturday);workday=;vara1,a2:age;ch:letter;m:month;d1,d2:workday;子界类型的运算:1.关于基类型的各种运算都实用该子界类型。
2.在同一程序,相反基类型的子界类型数据可以启动混合运算。
Type at=1..20; bt=1..200; ct=1..4000;Vara:at;b:bt; c:ct;以下语句是正确的:a:=10;b:=a+50;c:=a*b; 例:输入年、月,输入这个月有几天。
program date;var month:1..12;days:28..31;year:1..; beginread(year,month); 1996 2 case month of1,3,5,7,8,10,12:days:=31;2:if ((year mod 4=0)and(year mod 100<>0)or(year mod 400 =0) then days:=29 else days:=28;4,6,9,11:days:=30; end;writeln(day); end.
枚举类型enum用法c言语switch的用法是什么
1、在C言语中,枚举类型(enum)准许开发者定义一组命名的常数。
这些常数称为枚举常量,它们独特导致了枚举类型。
枚举类型是一种自定义的数据类型,它使得代码愈加可读和易于了解,尤其是当须要一组关系的常量时。
2、枚举类型的申明格局如下: ```c enum EnumName { EnumValue1, EnumValue2, // ... }; ``` 这里,`EnumName` 是枚举类型的称号,它之后跟着一对花括号,括号内是枚举值,用逗号分隔。
每个枚举值都是该类型的一个实例。
3、C言语中的 `switch` 语句是一种多分支选用结构,它准许基于不同的状况口头不同的代码块。
`switch` 语句经常使用枚举类型作为条件时,可以审核多个或者的枚举值,并提供相应的口头门路。
这使得解决枚举类型十分繁难,尤其是在须要依据不同的枚举值口头不同操作时。
4、经常使用 `switch` 语句 with 枚举类型的上班方式是: ```c enum Color { RED, GREEN, BLUE }; int main() { enum Color c = RED; switch (c) { case RED: printf(白色\n); break; case GREEN: printf(绿色\n); break; case BLUE: printf(蓝色\n); break; } return 0; } ``` 在这个例子中,依据变量 `c` 的值(RED, GREEN, 或 BLUE),`switch` 语句会口头与之对应的 `case` 块,并经常使用 `break` 语句防止口头后续的 `case` 块。