运算(风飏@df32翻译版)
翻译自原文档:https://osdn.net/projects/emuera/wiki/exop
译者:风飏@df32
也可跳转至:原版
一般运算
算术运算
下面的5个算术运算符都是二项运算符。
+
:数值的加法运算,以及字符串的连接运算。数值与字符串的相加会抛出错误。-
:数值的减法运算。*
:数值的乘法运算。字符串与数值相乘表示字符串的重复运算。/
:数值的整除运算。%
:数值的取余运算。
逻辑运算
以下逻辑运算符除!
是单项运算符以外都是二项运算符。
!
:逻辑非(NOT)&&
:逻辑和(AND)||
:逻辑或(OR)^^
:逻辑异或(XOR)!&
:逻辑与非(NAND)!|
:逻辑或非(NOR)
位运算
以下位运算符除~
是单项运算符以外都是二项运算符。
~
:按位取反(NOT)&
:按位与(AND)|
:按位或(OR)^
:按位异或(XOR)<<
:左移>>
:右移
比较运算
==
:相等判断!=
:不等判断<
:大于>
:小于<=
:小于等于>=
:大于等于
以上的比较运算既可以比较两个数值,也可以比较两个字符串。
三元判断运算
三元判断书写格式如下:
<条件> ? <真值> # <假值>
当值为字符串时,需要额外添加\@~\@
:
\@ <条件> ? <真值> # <假值> \@
对于赋值语句
<数值变量> = <条件> ? <真值> # <假值>
<字符串变量> = \@ <条件> ? <真值> # <假值> \@
等同于
IF <条件>
<数值变量> = <真值>
;或 <字符串变量> '= <真值>
ELSE
<数值变量> = <假值>
;或 <字符串变量> '= <假值>
ENDIF
赋值运算
数值赋值
A = 5
A = 1 + 2
文本赋值
STR = あいう
STR = %TSTR:0%いろは
字符串赋值
STR '= "あいう"
STR '= TSTR:0 + "いろは"
赋值复合运算
++
自加运算--
自减运算- 算术运算
*=
/=
%=
+=
-=
- 位移运算
<<=
>>=
- 位运算
&=
|=
^=
运算顺序
类型 | 优先级 | 赋值复合运算 | 符号 |
---|---|---|---|
否定运算符 | 高 | false | ~ , ! |
算术运算符 | ↑ | true | * , / , % |
true | + , - | ||
位移运算符 | true | << , >> | |
比较运算符 | false | < , > , <= , >= | |
false | == , != | ||
逻辑运算符 | true | & , ` | |
↓ | false | && , !& , ` | |
三元判断运算符 | 低 | false | ~?…#_ |
Emuera增加的运算
==
:字符串与字符串的比较。你不能将数字与字符串进行比较。!=
:字符串与字符串的比较。<
:字符串与字符串的比较。比较从一开始就进行,当发现不同的字符时就会确定。>
:字符串与字符串的比较。<=
:字符串与字符串的比较。>=
:字符串与字符串的比较。+
:字符串与字符串的连接。 数字和字符串不能被添加或连接。*
:字符串和整数的乘法。 不能将一个字符串乘以一个字符串。
逻辑运算符的短路评估
短路评估是指,例如,如果X在表达式X && Y
中为零,那么很明显,无论Y的值如何,操作的结果都是零,所以Y不被评估。
许多编程语言都包含这一机制。
这一机制使我们可以写出:
IF (ASSI >= 0) && (NO:ASSI == 1)
~~~
ELSE
~~~
ENDIF
如果ASSI
小于或等于0,总表达式必定为否定,因此NO:ASSI == 1
不会被计算,也就不会产生可能的错误。
评估的顺序是左项在先,右项殿后。
IF (NO:ASSI == 1) && (ASSI >= 0)
如果这样书写,则会首先计算NO:ASSI == 1
。此时如果ASSI
小于0,则会导致错误。