返回类型 布尔 布尔 布尔 布尔 布尔 布尔
例子 I = Max X <> Y X < Y Len > 0 Cnt <= I I >= 1
对大多数简单类型,比较运算非常容易理解。比如,只有I和J有相同的值,I = J才是真,否则I <> J为真。下面的规则适用于关系运算符:
? ? ? ? ?
除了实数和整数能一起比较外,两个运算数必须是兼容的类型;
对字符串进行比较,是依据它的每个字符在扩展ASCII字符集中的顺序,字符类型被当作长度为1的字符串;
两个packed string要进行比较,它们必须具有相同数目的元素;一个具有n个元素的packed string与一个字符串比较时,它被看作长度为n的字符串;
只有当两个PChar指针都指向同一个字符数组的范围内时,<、>、<= 和 >= 运算符才能作用于它们;
运算符 = 和 <> 能以类或类引用类型作为运算数。当用于类类型时,= 和 <> 的计算规则与
- 25 -
Syntactic elements
指针一样,只有当C和D指向同一个实例对象时,C = D为真,否则C <> D为真;当用于类引用时,只有当C和D表示同一个类时,C = D为真,否则C <> D为真。关于类的更多信息,请参考类和对象。
Class operators(类运算符)
as 和 is 运算符使用类和对象(实例)作为运算数,as 也用于接口类型。关于更多信息,请参考和对象以及对象接口。
关系运算符 = 和 <> 也用于类类型,请参考关系运算符。
The @ operator(@运算符)
@ 运算符返回一个变量、函数、过程或方法的地址,也就是说,@ 运算符构建一个指向运算数的指针。关于指针的更多信息,请参考指针和指针类型。下面的规则适用于 @ 运算符:
? 若X是一个变量,@X返回X的地址(当X是一个过程类型的变量时有特殊的规则,请参考句和表达式中的过程类型)。若默认的编译器指示字 {$T?} 在起作用,则@X的类型是Pointer(通用指针);在 {$T+} 状态下时,@X的类型是 ^T,这里T是X的类型; 若F是一个例程(一个函数或过程),@F返回F的入口点,@F的类型总是Pointer; 当 @ 作用于类的方法时,必须使用类名来限定方法名。比如
@TMyClass.DoSomething
它指向TMyClass的DoSomething方法。关于类和方法的更多信息,请参考类和对象。 ? ? Operator precedence rules(运算符优先级)
在复杂表达式中,运算符优先级规则决定了运算执行的顺序。 运算符
@,not
*,/,div,mod,and,shl,shr,as
+,?,or,xor
=,<>,<,>,<=,>=,in,is 优先级 第一级(最高) 第二级 第三级 第四级(最低)
具有较高优先级的运算符先进行运算,具有相同优先级的运算符从左边开始。因此表达式 X + Y * Z
先执行Y*Z,然后加上X作为结果,* 先被执行,因为它比 + 有较高优先级,但
X - Y + Z
先从X减去Y,然后加上Z作为结果,? 和 + 具有相同优先级,因此左边的运算先执行。
你能使用圆括号来覆盖优先级规则。有括号的表达式先被运算,然后把它作为单个运算数。比如 (X + Y) * Z
它把X和Y的和乘以Z。
- 26 -
Syntactic elements
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-16.html
美国扰乱了伊拉克
好可怜的学生党