运算
翻译自原文档: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,将导致错误。