pascal编程语言中 声明 record 类型中的 case 用法,多谢 30

 我来答
RedBaronVIP
2013-06-14 · TA获得超过1147个赞
知道小有建树答主
回答量:655
采纳率:0%
帮助的人:239万
展开全部
很简单,case关键字后面跟上某种类型,然后分支的序号与该类型保持一致就行,例如:
type
IntRec1 = packed record
ID: ShortString;
case Integer of
3: (
Param: Integer);
5: (
ParamLo: Word;
ParamHi: Byte);
end;

IntRec2 = packed record
ID: ShortString;
case Char of
'c': (
Param: Integer);
'e': (
ParamLo: Word;
ParamHi: Byte);
end;

IntRec3 = packed record
ID: ShortString;
case Boolean of
True: (
Param: Integer);
False: (
ParamLo: Word;
ParamHi: Byte);
end;
1、以上Param和ParamLo/ParamHi是变体结构的两个不同分支,可以用Param域直接访问该变体的整数部分(Integer),也可以用ParamLo域访问该整数部分的低16位(Word),用ParamH域i访问高8位(Byte)。
2、变体结构的大小,取决于占空间最大的分支,如本题中Integer(4字节)>Word(2字节)+Byte(1字节),因此本题三个变体结构大小均为256+4=260字节。
3、case后面的类型与分支标识的类型保持一致就行了,分支标识随便写什么都行(Integer与3、5,Char与'c'、'e',Boolean与True、False)。以上三种声明方法都声明的同一种类型。
4、为了能精确访问变体结构的域,一般要加packed关键字,防止编译器自动对齐。
5、变体结构在日常编程中用的不多,它大量使用在对Windows API的翻译中。
PCFAN9999
2013-06-14 · TA获得超过3683个赞
知道小有建树答主
回答量:1553
采纳率:50%
帮助的人:496万
展开全部
type BirthOrAge=(BirthFlag, AgeFlag);
PersonType=record
id:
string[18];
name: string[50];
gender: (male, female);
case flag:
BirthOrAge of
BirthFlag: (birthday: longint);
AgeFlag: (age:
0..150);
end;

// birthday 和 Age 是重叠的,既可表示 生日,也可表示年龄。(二取一)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
82111668_2012
2013-06-12 · TA获得超过450个赞
知道小有建树答主
回答量:338
采纳率:100%
帮助的人:179万
展开全部
type node=record
case a:char of
'b':(b:integer);
'c':(c:integer);
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式