X+Y)由变量X和Y(X、(X+Y)as + - or xor = > 或者是二元的,除此之外,P^),A=7)。
- 21 -
(表示整数或实数时,
Syntactic elements
关于表达式中运算符的优先级,请参考运算符优先级一节。
Arithmatic operators(算术运算符)
算术运算符作用于实数或整数,包括 + 、- 、* 、 /、 div 和 mod。 运算符 + - * / div mod
运算符 +(一元) -(一元)
运算 正 负
运算数类型 整数,实数 整数,实数
返回类型 整数,实数 整数,实数
例子 +7 -X
运算 加 减 乘 实数除 整数除 余数
运算数类型 整数,实数 整数,实数 整数,实数 整数,实数 整数 整数
返回类型 整数,实数 整数,实数 整数,实数 实数 整数 整数
例子 X + Y Result - 1 P * InterestRate X / 2
Total div UnitSize Y mod 6
以下规则适用于算术运算符: ?
不管x和y的类型是什么,x/y的结果总是扩展类型(extended);对其它运算符,只要有一个运算数是实数类型,它的结果就是扩展类型;另外,只要有一个运算数是Int64类型,它的结果就是Int64类型;否则,结果就是整数类型。如果一个运算数是整数的子界类型,它就像整数类型一样被对待。
x div y的值取整数,也就是取得x/y的值,然后以0的方向取得最近的整数。 mod运算返回对运算数进行整数除后得到的余数。换句话说,就是x mod y = x - (x div y)*y。 若y为0的话,表达式x/y、x div y和x mod y将发生运行时错误。
? ? ?
Boolean operators(布尔运算符)
布尔运算符not、and、or和xor作用于任何布尔类型的运算数,并返回一个布尔类型的值。 运算符 not and or xor
运算 否 与 或 异或
运算数类型 布尔 布尔 布尔 布尔
结果类型 布尔 布尔 布尔 布尔
例子
not (C in MySet) Done and (Total > 0) A or B A xor B
这些运算遵循标准的布尔逻辑规则。比如,像x and y形式的表达式,当且仅当x和y都为True时,它的结果才为True。
Complete versus short-circuit Boolean evaluation(完全计算和部分计算)
编译器对and和or运算符支持两种计算方式:完全计算(complete evaluation)和部分计算(short-circuit evaluation或partial evaluation)。 完全计算会计算每个连接项(conjunct和disjunct)的值,即使整个表达式的结果已经确定了。部分计算从左到右计算每个连接项,一旦整个表达式的结果确定下来,计算就停止了。比如,对于表达式A
- 22 -
Syntactic elements
and B,在进行部分计算时,若A是False,则整个表达式的值也是False,此时编译器不再计算B的值。 通常,部分计算更可取,因为它的执行时间最少,并且在大多数情况下使用最少的代码。当运算数是一个进行边界操作(side effects)的函数并影响程序的执行时,完全计算有时是比较方便的。 部分计算也能避免一些在其它情况下会产生的非法运行时错误。比如,下面的代码遍历字符串S,直到发现第一个逗号
while (I <= Length(S)) and (S[I] <> ',') do begin ...
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-13.html
一万块钱算
中国军事专家认为