基本字符类型是AnsiChar和WideChar。AnsiChar是8位字符集,它们将依照本地字符集的顺序排列,这可能是多字节的。AnsiChar原先是根据ANSI字符集建立的,但现在扩展为可以指定本地字符集。 WideChar使用多于一个字节来表示每个字符。在当前实现中,WideChar依据Unicode字符集(要意识到它的实现将来可能会改变),使用一个字的宽度(16-bit)来存储字符。开头的256个Unicode字符对应于ANSI字符。
一般字符类型是Char,它相当于AnsiChar。因为Char的实现可能被迫改变,所以,在需要处理不同大小的字符时,应该使用SizeOf而不要使用硬编码常数,这通常是个好主意。
一个长度为1的字符串常量,比如'A',可以表示一个字符。内置函数Chr,返回一个在AnsiChar或WideChar取值范围内任意一个整数的字符值。比如,Chr(65)返回字母A。
字符和整数一样,当因为增加或减少而超过它的取值范围的开头或尾部时,它的值将回转(除非开启了边界检查)。比如,下面的代码执行后
var
Letter: Char;
I: Integer;
begin
Letter := High(Letter);
for I := 1 to 66 do
Inc(Letter);
end;
Letter的值将是A(ASCII值为65)
Boolean types(布尔类型)
4种内置的布尔类型为Boolean、ByteBool、WordBool和LongBool,Boolean是首选的,另外三种是为了和其它语言以及操作系统库相兼容。
一个Boolean类型的变量占据一个字节,ByteBool也是,WordBool类型占据两个字节(1 word),LongBool占据4个字节(2 words)。
Boolean值由内置的常数True和False来表示。
False < True
Ord(False) = 0
Ord(True) = 1
Succ(False) = True
Pred(True) = False False <> True Ord(False) = 0 Ord(True) <> 0 Succ(False) = True Pred(False) = True
对ByteBool、WordBool和LongBool来说,若它的序数不为0,它就被认为是True。在一个需要Boolean类型的环境种,编译器自动把非0值转换为True。
- 46 -
Data types, variables and constants
前面说明指的是Boolean的序数值,而不是它们自身的值。在Object Pascal中,布尔表达式不能和整数或实数进行换算。所以,若X是一个整数变量,语句
if X then ...;
会产生编译错误。把这个变量强制转换为布尔类型也是不可取的,但下面的用法可以正常工作: if X <> 0 then ...; { use longer expression that returns Boolean value }
var OK: Boolean { use Boolean variable }
...
if X <> 0 then OK := True;
if OK then ...;
Enumerated types(枚举类型)
枚举类型定义一个有次序的值的集合:这些值用标志符表示,并被列举出来,但它们并没有内在的含义。定义一个枚举类型,使用下面的语法:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-29.html
这明显是自亚投行以来中国在国际上混的风生水起
到你现在几千元
有些人天天骂马云淘宝卖假货