运算
翻译自原文档:https://osdn.net/projects/emuera/wiki/exop
也可跳转至:风飏@df32翻译版
运算符
单项运算符
二元运算符
三元运算符
赋值运算符
递增运算符 & 递减运算符
临时的运算符优先权表格
| 类型 | 优先级 | 替换复合运算 | 符号 |
|---|---|---|---|
| 负数运算符 | 高 | false | ~, ! |
| 算术运算符 | ↑ | true | *, /, % |
| true | +, - | ||
| 位移运算符 | true | <<, >> | |
| 比较运算符 | false | <, >, <=, >= | |
| false | ==, != | ||
| 逻辑运算符 | true | &, ` | |
| ↓ | false | &&, !&, ` | |
| 三元运算符 | 低 | false | ~?…#_ |
添加的运算
==:字符串与字符串的比较。你不能将数字与字符串进行比较。!=:字符串与字符串的比较。<:字符串与字符串的比较。比较从一开始就进行,当发现不同的字符时就会确定。>:字符串与字符串的比较。<=:字符串与字符串的比较。>=:字符串与字符串的比较。+:字符串与字符串的连接。 数字和字符串不能被添加或连接。*:字符串和整数的乘法。 不能将一个字符串乘以一个字符串。STR:0 = % "啊" * 10 % PRINTFORML STR:0 = "%STR:0%" WAIT ;等价于 STR:0 = "啊啊啊啊啊啊啊啊啊啊"
逻辑运算符的短路评估
短路评估是指,例如,如果X在表达式(X && Y)中为零,那么很明显,无论Y的值如何,操作的结果都是零,所以Y不被评估。
在许多语言中,包括 Kirikiri,逻辑运算符是短路的。
这种评价方法使我们可以写出:
IF (ASSI >= 0) && (NO:ASSI == 1)
~~~
ELSE
~~~
ENDIF
如果ASSI小于或等于0,NO:ASSI不被引用,因为总的结果是0,不管(NO:ASSI == 1)的结果如何。因此,不会产生错误。
评估的顺序是左项在先,右项殿后。
IF (NO:ASSI == 1) && (ASSI >= 0)
如果你这样写,它将首先尝试计算(NO:ASSI == 1),如果ASSI<0,将导致错误。