运算符

运算符 是要在一个或两个术语上执行的操作 (例如,添加) 的表示。 本主题描述了每个运算符(前缀运算符除外)如何作用于两个术语,这两个术语可以是符号、字符串、函数调用、中间结果或子表达式。 每个前缀运算符都对其后面的术语或子表达式执行操作。

与运算符字符相邻的空格 (和注释) 不会影响运算符; 因此,由多个字符构造的运算符可以具有嵌入的空格和注释。 此外,一个或多个空格 (它们出现在表达式中但与另一个运算符不相邻) 也充当运算符。

有四种类型的运算符:
  • 并置
  • 算术
  • 比较
  • 逻辑

字符串连接运算符

连接运算符通过将第二个字符串附加到第一个字符串的右端,将两个字符串组合成一个字符串。 连接词可以有也可以没有中间的空格。

您可以使用 || 运算符强制连接,无需空格。

假设两个术语之间存在一个连接操作符,且中间没有其他操作符。 当两个术语在语法上不同,例如字面字符串和符号,或者仅以注释分隔时,就会出现这种情况。

表 1. 连接运算符
运算符 描述
(空白) 用空格连接两个词
|| 连续书写,中间不留空格
(对接) 连续书写,中间不留空格
示例:

一个语法上不同的术语的例子是:如果 Fred 的值为 37.4 ,则 Fred'%' 的值为 37.4%

如果变量 PETER 的值为 1 ,则 (Fred)(Peter) 的值为 37.41

在EBCDIC中,两个相邻的字符串(一个十六进制,一个文本) 'c1 c2'x'CDE' 的计算结果为 ABCDE

在下面的例子中,没有隐含的连接运算符,因此表达式无效。

Fred/* The NOT operator precedes Peter. */¬Peter

然而,下面的例子会产生一个邻接,计算结果为 37.40

(Fred)/* The NOT operator precedes Peter. */(¬Peter)

算术运算符

您可以使用表2中的算术运算符组合有效数字的字符串(请参阅 “标记” )。
表2。 算术运算符
运算符 描述
+ 添加
-
*
/ 划分
% 整数除法(除法并返回结果的整数部分)
// 余数(除以并返回余数——不是模数,因为结果可能是负数)
** 幂(将数字提高到整数幂)
前缀 - 与减法相同: 0 - number
前缀 + 与添加方式相同: 0 + number

有关精度、有效数字的格式以及算术运算规则的详细信息,请参阅数字和算术运算。 如果算术结果以指数形式显示,则可能进行了四舍五入。

比较运算符

比较运算符用于比较两个术语,如果比较结果为真,则返回值 1 ,否则返回值 0

严格的比较运算符都有一个字符定义的运算符加倍。 ==\==/==¬== 运算符用于测试两个字符串是否完全匹配。 两个字符串必须完全相同(逐个字符相同),且长度相同,才能被视为严格相等。 同样,严格的比较运算符(如 >><< )会逐个字符进行比较,不会填充任何字符串。 两根琴弦的比较从左到右。 如果一个字符串比另一个字符串短,并且是另一个字符串的前导子串,那么它比另一个字符串更短。 严格的比较运算符也不会尝试对两个操作数进行数字比较。

对于所有其他比较运算符,如果两个操作数都是数字,则进行数字比较(忽略前导零,参见数字比较 )。 否则,这两个术语都将被视为字符串(忽略前导和尾随空格,然后用空格填充较短的字符串)。

字符比较和严格比较操作均区分大小写,而且两种操作的精确排序顺序取决于所使用的字符集。 例如,在EBCDIC环境中,小写字母在字母之前,数字 0 - 9 高于所有字母。

表3。 比较运算符和操作
运算符 描述
= 如果条件相等(数值相等或经过填充等),则成立
\=, ¬=, /= 如果条件不等(=的倒数),则成立
> 大于
< 小于
>< 大于或小于(等于不等于)
<> 大于或小于(等于不等于)
>= 大于或等于
\<, ¬< 不小于
<= 小于或等于
\>, ¬> 不大于
== 如果条件严格相等(相同),则正确
\==, ¬==, /== 如果条件不完全相等(与==相反),则成立
>> 严格大于
<< 严格来说,少于
>>= 严格大于或等于
\<<, ¬<< 严格来说,不能低于
<<= 严格小于或等于
\>>, ¬>> 严格小于
注意 :在语言中 ,not字符¬ )与反斜杠( \ )是同义词。您可以根据可用性和个人喜好交替使用这两个字符。 反斜杠可以出现在以下操作符中: \ (前缀不是)、 \=\==\<\>\<<\>>

逻辑(布尔)运算符

如果字符串为 0 ,则取值为false;如果字符串为 1 ,则取值为true。 逻辑运算符取一个或两个这样的值(不允许使用 01 以外的值),并返回 01

表4。 逻辑(布尔)运算符
运算符 描述
& 和。 如果两个条件都满足,请返回 1
| 包含或。 如果任一条件成立,请返回 1
&& 排他性或。 如果以下任一条件(非同时满足)成立,请发送电子邮件至 1
前缀: 逻辑非。 否定; 1 变为 00 变为 1