西门子SCL编程中的表达式、运算符和地址概述
表达式表示在编译或运行期间计算出来的一个值,由地址(如常量、变量或函数调用)和运算符(如*, /, + 或 -)组成。
地址的数据类型和所用的运算符决定了表达式的类型。在SCL中可能有下列表达式:
一、表达式概述:
1、算术表达式
算术表达式是由算术运算符构成的。其允许处理数字类数据类型。
下表显示所有可能的运算符和指出依据地址的结果属于的类型。用到下列缩定:
规则(Rules):
按其优先级操作在算术表达式中的运算符:
- 在没有语法必须情况下,为了清晰明了,将负数插起来是可取的。
- 当两个完全的INT类型的数相除,运算符"DIV"和"/"得出同样的结果(见下面的例子)。
- 在除法运算中(`/', `MOD'和`DIV'),第二个地址不能是0。
- 如果说一个是INT类型的数(整数),另一个是REAL类型的数(实数),则结果总是REAT类型。
- 当DATE_AND_TIME和TIME类型的数据相减时,数据类型为TIME的地址总是必须放在运算符"-"的右边。
例子(Examples)
// 将算术表达式的结果(11)指定给变量"VALUE"
VALUE1 := 3 + 3 * 4 / 2 - (7+3) / (-5) ;
// 下面的表达式的值是1
VALUE2 := 9 MOD 2 ;
2、比较表达式
比较表达式比较两个地址的值,并求出一个布尔值。如果比较条件是真则结果是TRUE,否则为FALSE。
规则(Rules)
下表列出了可比较的数据类型和转换时的规则:
比较表达式的组成:
比较表达式能够根据执行语句的布尔规则进行组合,如"if a < b and b < c then ..."。
按照其优先级对运算进行求值。可用括号改变优先级别。
比如下面的例子:
// 比较:3小于或等于4. 结果是"TRUE"(真)
A := 3 <= 4
// 比较:7不等于7. 结果是"FALSE"(假)
7 <> 7
// 在IF语句中的比较表达式的求值
IF COUNTER < 5 THEN ....
// 两个比较表达式组合
Value_A > 20 AND Value_B < 20
// 两个比较表达式用括弧组合
A<>(B AND C)
3、逻辑表达式
逻辑表达式是由逻辑运算符构成的。
基本逻辑运算符:
用运算符AND, &, XOR和OR,逻辑地址(BOOL类型)或数据类型BYTE、WORD或DWORD能够组成逻辑表达式。负逻辑则用NOT运算符。
逻辑运算符:
布尔类型的逻辑表达式的结果是TRUE或FALSE二者之一,而两个位型地址的逻辑运算结果是位阵。
下表列出了可用的逻辑表达式和地址及结果的数据类型。用到下面的缩写: