问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++中什么叫枚举值?

发布网友 发布时间:2023-07-14 14:11

我来回答

1个回答

热心网友 时间:2024-12-05 11:46

一、类型定义
类型定义的语法格式:
type
<标识符1>=<类型1>;
<标识符1>=<类型1>;
……
<标识符n>=<类型n>;
二、枚举类型
通过预定义列出所有值的标识符来定义一个有序集合,这些值的次序和枚举类型说明中的标识符的次序识一致的。枚举类型的形式:(标识符1,……,标识符n)
例如: type daystype=(sunday,monday,tuesday,wednesday,thursday,friday,saturday)
枚举元素只能是标识符,而不能是数值常量或字符常量。例如以下的定义是错误的:
type daystype=('sun','mon','tue','wed','thu','fri','sat')
枚举元素是标识符,不要把作为枚举元素的标识符视作变量名,它不能被赋值。同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。例如以下的定义是错误的:
type daytype1=(monday,tuesday);
daytype2=(monday,wednesday);
可以将枚举类型的定义和变量的定义结合在一起。例如:var a:(monday,tuesday,sunday)
枚举类型属于顺序类型。根据定义类型时各枚举元素的排列顺序确定它们的序列,序列号从0开始
例如:已经定义daystype
ord(sunday)=0,succ(sunday)=monday,pred(friday)=thursday
但是枚举类型中的第一个元素没有前趋,最后一个元素没有后继。Turbo Pascal不允许直接读写枚举值,所以枚举值的输出常用case语句间接的输出。枚举值的输入,则要一一判断读入字符是否是枚举类型的标识符。若是才能赋给枚举变量,否则就会出错。
例如:枚举值的输出
case day of
sunday:write('sunday');
monday:write('monday');
tuesday:write('tuesday');
wednesday:write('wednesday');
thursday:write('thursday');
friday:write('friday');
saturday:write('saturday');
end;
三、子界类型
子界类型是由整型、字符型、枚举型、布尔型的两个常量指定该类型的值域区间。子界类型的形式:
常量..常量 两个常量必须是同一种顺序类型。例如:a..b,要求a<=b
例如:
type a=1..3;
b='a'..'d';
一个子界类型继承它的常量类型的运算符和标准函数,常量类型相容的不同子界类型可以混合运算,可以赋值。可以将子界类型的定义和变量的定义结合在一起。例如:var a:1..9
例 按月、日、年顺序读入一日期,输出该日期是这一年中的第几天。
program date;
var year:0..2010;
month,i:1..12;
day:1..31;
dayth:integer;
begin
read(month,day,year);
dyath:=0;
for i:=1 to month-1 do
case i of
1,3,5,7,8,10,12:dayth:=dayth+31;
2:if ((year mod 4=0)and(year mod 100<>0)or(year mod 400 =0)
then dayth:=dayth+29
else dayth=:=dayth+28;
4,6,9,11:dayth:=dayth+30;
end;
dayth:=dayth+day;
writeln(dayth)
end.
四、类型相容和赋值相容
1.类型相容性
类型相容是对参加同一运算的两个对象的类型要求。设有两个变量,如果满足下列条件之一,就说这两个变量的类型相容。
(1)两个变量的类型相同
a.两个变量被同一类型说明。
例如:var a,b:1..30;
b.两个变量的类型是同一类型标识符。
例如:var a:1..30; b:1..30;
c.两个变量的类型是不同的类型标识符,但在类型定义中已经说明两个标识符相同。
例如:type date=1..100; range=date;
var m:data;n:range;
(2)一个变量的类型是另一个变量的子界。
(3)两个变量的类型都是同一基类型的子界。
(4)两个变量的类型是基类型相容的集合类型。
(5)两个变量的类型是成分相同的串类型。
2.赋值相容性
赋值相容是对赋值操作的两个对象的类型要求。设赋值语句“:=”左边的变量类型为T,右边表达式的类型为E,若类型T和类型E满足下列条件之一,则称他们是赋值相容的。
(1)T和E是相同的类型,而且类型不是文件类型,也不是具有文件类成分的构造类型。
(2)T是实型,而E是整型或整型的子界。
(3)T和E是类型相容的顺序类型,并且E的值不超出T所定义的值的范围
(4)T和E是类型相容的集合类型,并且E的值不超出T所定义的值的范围
(5)T和E是类型相容的串类型。
当T和E是顺序类型或都是集合类型时,不仅要求这两个类型是相容的,而且要求E的值不超出T所定义的值的范围;否则将产生类型溢出,而这种错误只能在你运行程序时进行检查,因此你必须要避免不发生这种错误。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
招商银行的美元天添金怎么样? 天添美蒸馒头为什么开裂呢 上海食堂送菜 邮政跨地区取款手续费多? 谁能告诉我邮政储蓄卡跨省取钱要不要收费啊? 自贡市龙盛世纪仿真模型制造有限公司公司简介 学PS真的很难吗 红烧萝卜牛筋 微信怎么转发公众号部分内容 转发公众号部分内容方法 微信公众号内的视频如何下载?一个F12搞定 喝纯净水和凉白开哪个有益健康? 语文课堂作业本八年级下第一课藤野先生 遗民怎么读 请教一下~从简阳到成都温江的汽车每天有好多啊? shopee卖家开直播可以用软件翻译吗? 四川安岳县到简阳市的大巴车是到简阳的哪个车站? 名匠装饰口碑如何? 求泰剧破碎的心的片头曲歌词 耵聍堵塞,为什么我挖的时候没东西? 泰剧什么罗之恋拜托各位大神 十斤糯米饭卖五元一团能卖多少钱 问:耵聍栓塞,用药水滴耳后到医院冲洗不出,怎么办 办公区雨天路滑,物业应该注意哪些 单身男女都在想些什么? 单身男女如何在社交网站找到靠谱对象? 阳山村位于哪个省哪个市 啊啊啊,你好吗你好吗是什么音乐 歌词里有&quot;你好吗 你好吗 你过的快乐吗&quot;的歌名是什么? 清明上河图绘画风格是 《清明上河图》属于什么类型的画 屏幕刷新率只到75达不到85可我想把它达到85咋办? 杭州浙商财富中心楼盘地址在哪里? 大写VOID是什么意思 杭州火车东站去浙商财富中心店怎么坐地铁 杭州东站到浙商财富中心有地铁吗 杭州紫荆辰光是哪个开发商? 浙江新财道投资管理有限公司怎么样? 浙商财富中心怎么乘坐机场大巴 冬暖花会开英皓冬是谁演的 你好,麻烦你给我开个小柴胡汤的处方。 演冬暖花会开里的沈东良是谁演的 高筒靴过膝还是不过膝好看 对于小粗腿来说,过膝长靴和刚到膝盖的长靴相比,谁更显瘦? 西南交通大学学科竞赛直接推免占保研名额吗 西南交通大学希望学院有保研资格吗 保研参考的是加权平均分吗 7座车与5座车的区别 至尊无赖小说可以在线看的免费资源链接地址 我和两个兄弟要结拜,求大师算一个吉日 下个月用什么日子结拜兄弟好?