算术表达式
算术表达式表示一种计算。算术表达式的结果是分配给算术表达式的计算类型的数值。在算术表达式 arith_exp 中,可以使用算术运算符 +、-、*、/、DIV、MOD 或 ** 将一个操作数 operand1 与一个或多个操作数 operand2、操作数 operand3 ......连接起来,也可以使用括号。计算按照相关计算类型指定的计算规则进行。
算术表达式可以出现在某些语句的读取位置,特别是在使用赋值运算符 = 进行赋值的右侧。 当用作无损运算符 EXACT 的操作数时,可以对算术表达式进行无损计算检查。
语法
... [+|-] operand1
[{+|-|*|/|DIV|MOD|**} [+|-] operand2
[{+|-|*|/|DIV|MOD|**} [+|-] operand3
... ]] ...
- +|-:操作数的符号
- +|-|*|/|DIV|MOD|**:算术运算符
操作数位置操作数是通用表达式位置,这意味着可以指定数值数据对象、预定义函数、函数方法或复合算术表达式。算术运算符 +、-、*、/、DIV、MOD 和 ** 连接两个相邻的操作数。计算表达式时,将计算一个数值并将其与下一个相邻操作数联接。此联接的优先级取决于所使用的运算符。
每个操作数前面可以有符号 + 或 -,顺序不限,并由一个或多个空格分隔。使用符号的效果与在其位置指定表达式 +1 * 或 -1 * 相同,这意味着符号与乘法具有相同的优先级。
如果将函数方法或类似字符的表达式指定为操作数,则在计算表达式的其余部分之前,将从左到右、从内到外指定它们。返回值经过缓冲,以便在相应的操作数位置使用。在这里,类字符处理函数和字符串表达式只能作为描述函数的参数。
笔记:
- 注意也用作操作数的数据对象的值是否在指定的函数中发生更改 方法。即使此类型的操作数位于函数方法之前,其值也始终会在计算之前由方法更改。
- 算术表达式、字符串表达式和位表达式不能 被组合。但是,用作算术表达式的操作数的预定义函数可以包含字符串表达式或位表达式作为参数。
- 如果将算术表达式指定为重载数值函数之一的参数,则整个函数的工作方式类似于算术表达式。
可处理的异常
CX_SY_ARG_OUT_OF_DOMAIN
- Cause: Illegal argument in powers
Runtime Error: COMPUTE_POW_DOMAIN
CX_SY_ARITHMETIC_OVERFLOW
- Cause: Overflow in arithmetic operation (type p)
Runtime Error: BCD_OVERFLOW
- Cause: Overflow in arithmetic operation (all operands type p)
Runtime Error: COMPUTE_BCD_OVERFLOW
- Cause: Overflow in cosh
Runtime Error: COMPUTE_COSH_OVERFLOW
- Cause: Overflow or underflow in exp
Runtime Error: COMPUTE_EXP_RANGE
- Cause: Overflow in addition (type decfloat)