📅  最后修改于: 2020-11-03 07:01:00             🧑  作者: Mango
运算符在对变量执行各种操作方面起着重要作用。本章为您介绍LOLCODE中的各种运算符及其用法。
数学运算符取决于前缀符号,即操作数之前的符号。当所有运算符都有已知数量的参数或操作数时,则不需要分组标记。如果运算符没有固定的参数或操作数,则使用MKAY关闭运算。
如果MKAY与语句末尾一致,则可能不会使用它。在这种情况下,应使用EOL关键字。要使用一元数学运算符,请使用以下语法-
可以选择使用AN关键字来分隔参数,并在多个操作数上应用单个操作,因此二进制运算符表达式具有以下语法-
AN
任何包含具有无数个参数的运算符的表达式都可以使用以下语法表示:
[[AN ] AN ...] MKAY
以下是LOLCODE中的基本数学运算-
SUM OF AN BTW This is a plus + operator
DIFF OF AN BTW This is a minus - operator
PRODUKT OF AN BTW This is a multiply operator *
QUOSHUNT OF AN BTW This is a divide operator
MOD OF AN BTW This is a modulo operator
BIGGR OF AN BTW This is a max operator
SMALLR OF AN BTW This is a min operator
上面的和可以是唯一的表达式,因此数学运算符可以无限地嵌套和分组。
在存在两个NUMBR的情况下,将参数视为整数数学进行数学运算,但是如果两个表达式中的任何一个为NUMBAR,则将运算视为浮点运算。
HAI 1.2
I HAS A m ITZ 4
I HAS A n ITZ 2
VISIBLE SUM OF m AN n BTW +
VISIBLE DIFF OF m AN n BTW -
VISIBLE PRODUKT OF m AN n BTW *
VISIBLE QUOSHUNT OF m AN n BTW /
VISIBLE MOD OF m AN n BTW modulo
VISIBLE BIGGR OF m AN n BTW max
VISIBLE SMALLR OF m AN n BTW min
KTHXBYE
上面的代码在运行时将产生以下输出-
sh-
4.3$ lci main.lo
6
2
8
2
0
4
2
请考虑以下与在LOLCODE中使用数学运算符有关的要点-
如果表达式中的一个或两个参数均为YARN,则将它们视为NUMBAR。
如果不能将任何参数安全地内部强制转换为数字类型,则它将失败并显示错误
布尔运算符应用于可能为true或false的那些值。 TROOF上的布尔运算符如下-
BOTH OF AN BTW its and operation: WIN if m = WIN and n = WIN
EITHER OF AN BTW its or operation: FAIL iff m = FAIL, n = FAIL
WON OF AN BTW its xor operation: FAIL if m = n
NOT BTW its an unary negation: WIN if m = FAIL
ALL OF AN ... MKAY BTW it will take infinite arguments and apply AND
ANY OF AN ... MKAY BTW it will take infinite arguments and apply OR.
请注意,如果表达式
当您想比较LOLCODE中的两个或多个操作数时,可以使用以下任何一种方法进行比较-
您可以使用相等运算符比较两个二进制操作数。语法如下所示-
BOTH SAEM AN BTW this will return WIN if m is equal to n
DIFFRINT AN BTW this will return WIN if m is not equal to n
您可以比较两个值是否均为NUMBR类型。请记住,如果其中一个值是NUMBAR,则将它们作为浮点值进行比较。
您还可以使用最小和最大运算符执行比较。语法如下所示-
BOTH SAEM AN BIGGR OF AN
BOTH SAEM AN SMALLR OF AN
DIFFRINT AN SMALLR OF AN
DIFFRINT AN BIGGR OF AN
例
HAI 1.2
I HAS A VAR11 ITZ 7
BOTH SAEM VAR11 SMALLR OF VAR11 AN 8, O RLY?
YA RLY
VISIBLE "TRUE"
NO WAI
VISIBLE "FALSE"
OIC
KTHXBYE
执行给定的代码时,您可以看到以下输出-
sh-
4.3$ lci main.lo
TRUE
LOLCODE允许您使用SMOOSH…MKAY运算符显式连接无限数量的YARN。对于串联,可以使用AN运算符分隔多个参数。
HAI 1.2
I HAS A VAR1 ITZ A YARN
VAR1 R "TRUE"
I HAS A VAR2 ITZ A YARN
VAR2 R "ANOTHER TRUE"
I HAS A VAR3 ITZ A YARN
VAR3 R "ONE MORE TRUE"
VISIBLE SMOOSH VAR1 " " VAR3 " " VAR2 MKAY
KTHXBYE
上面给出的代码在执行时将产生以下结果-
sh-
4.3$ lci main.lo
TRUE ONE MORE TRUE ANOTHER TRUE
处理特定类型的运算符会隐式地将一种类型的值强制转换或转换为另一种类型。如果无法将值安全地转换为其他类型,则将导致错误。
可以使用二进制MAEK运算符将表达式的值显式转换或转换为其他类型。 MAEK运算符的语法是-
MAEK A
其中,
要将变量显式转换为其他类型,可以使用带有MAEK运算符的普通赋值语句,或者可以按如下方式使用强制赋值语句-
IS NOW A BTW this code will be equal to
R MAEK A
HAI 1.2
I HAS A food ITZ "111.00033"
VISIBLE food
BTW this is how we do type casting
MAEK food A NUMBAR
VISIBLE food
KTHXBYE
上面的代码将产生以下输出-
sh-4.3$ lci main.lo
111.00033
111.00033