脚本运算符
以下运算符可以在表达式中使用。
运算符 | 描述 |
---|---|
() 括号 |
这些是用来分组操作的,所以它们会以正确的顺序执行。 “a = b (c + d)” 会先将 c 和 d 相加,然后与 b 相乘,再将结果分配给 a。如果没有括号,因为 的优先级比 + 高,所以先将 b 和 c 相乘,然后再与 d 相加。 |
[] 方括号 | 这些都是用在变量的末尾,表示对象变量的索引。索引可以是一个常量,也可以是一个局部变量。数组中的起始索引总是 0。 SENSORA[4] 表示 SENSORA 的第五个对象。在本例中,它的意思是 4 号传感器。 SENSORA[st] 表示数组中局部变量 st 所包含的对象。如果 st 包含 3,表示第四个对象。 |
. 点. | 这是用来分隔字段的 |
! + - 一元运算 | 这些一元运算符可以在操作数前使用,以改变返回值。 如果传感器 5 标志开启,则 !SENSORA[5].FLAG 返回 0,如果传感器 5 未开启,则返回 1。 !var 如果局部变量 var 是非零,则返回 0,如果 var 为零,则返回 1。 “a = -b” 将 b 的倒数(反号)值赋给 a。 “a = -5” 将常量 -5 赋值给 a。 “a = +b” 将 b 赋值给 a。”一元+” 与 “一元-“ 意义相同,但也是默认值。 |
* / % 多元运算符 | 是乘法,/ 是除法,% 是取余。 “a = 3 b” 将 3 乘以 b 的结果赋值给 a。 “小时 = seccnt / 3600; “将 seccnt 除以 3600(1 小时,以秒为单位)的结果的整数赋值给小时。”min = (seccnt % 3600) / 60;” 将上一次操作的余数(小时内未覆盖的秒数,除以 60(以秒为单位的 1 分钟)分配给 min。”sec = (seccnt % 3600) % 60;” 将剩下的时间分配给 sec。 |
+ - 加法运算符 | + 是加法,- 是减法。 “a=b+c-3;” 把 b 加 c 减 3 赋给 a。 |
< <= > >= 比较 | < 表示小于,<= 表示小于或等于,> 表示大于,>= 表示大于或等于。 “a = b <= c;” 将比较结果 b 小于或等于 c 赋值给 a,如果 b 小于或等于 c,则 a 得到值 1,否则 a 得到值 0。 |
== != 比较(等于) | == 表示等于, != 表示不等于。 “a = b != c;” 将比较 b 不等于 c 的结果赋值给 a,如果 b 不等于 c,则 a 得到值 1,否则 a 得到值 0。 |
& ^ | 位操作 | & 是在两个运算符的所有位之间的逻辑与,| 是在两个运算符的所有位之间的逻辑或,^ 是在两个运算符的所有位之间的逻辑异或。 “a = b & 0xff” 将 b 中较低的字节分配给 a。 |
&& || 逻辑运算符 | && 是两个操作符之间的逻辑与,|| 是两个操作符之间的逻辑或。a = b && c || d;” 分配逻辑测试的结果,如果 b 和 c 为真或 d 为真。如果 b 和 c 都为真(非零)或 d 为真(非零),则 a 得到值 1,否则 a 得到值 0。 |
= 赋值 | 这个运算符将表达式的结果向右分配给左边的变量。 |
下面是运算符的优先级列表。最上面一行的优先级最高(优先级)。同一级别的运算符按照关联性顺序执行。
运算符 | 描述 |
---|---|
() [] . | 从左到右 |
! + - | 从右到左 |
* / % | 从左到右 |
+ - | 从左到右 |
< <= > >= == != | 从左到右 |
& ^ | | 从左到右 |
&& | 从左到右 |
|| | 从左到右 |
= | 从右到左 |