Lolcode - 运算符

运营商在对变量执行各种操作方面发挥着重要作用.本章为您提供LOLCODE中的各种运算符及其用法.

运算符

数学运算符依赖于前缀表示法,即操作数之前的表示法.当所有运算符都具有已知数量的参数或操作数时,则不需要分组标记.如果运算符没有固定的参数或操作数,则使用MKAY关闭操作.

如果MKAY与语句的结尾一致,则不能使用MKAY.在这种情况下,应使用EOL关键字.要使用一元数学运算符,请使用以下语法 :

<operator> <expression>

AN关键字可以选择用于分隔参数,并对多个操作数应用单个操作,因此二元运算符表达式具有以下语法 :  ;

<operator> <expression1> AN <expression2>

包含具有无限数量参数的运算符的任何表达式都可以使用以下语法表示 :

<operator> <expression1> [[AN <expression2>] AN <expression3> ...] MKAY

数学

以下是LOLCODE中的基本数学运算 :

SUM OF <a> AN <b>      BTW This is a plus + operator
DIFF OF <a> AN <n>     BTW This is a minus - operator
PRODUKT OF <a> AN <n>  BTW This is a multiply operator *
QUOSHUNT OF <a> AN <n> BTW This is a divide operator
MOD OF <a> AN <n>      BTW This is a modulo operator
BIGGR OF <a> AN <n>    BTW This is a max operator
SMALLR OF <a> AN <n>   BTW This is a min operator

< a>和< b>每个都可以是上面的唯一表达式,因此数学运算符可以无限期地嵌套和分组.

在存在两个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 <m> AN <n>             BTW its and operation: WIN if m = WIN and n = WIN
EITHER OF <m> AN <n>           BTW its or operation: FAIL iff m = FAIL, n = FAIL
WON OF <m> AN <n>              BTW its xor operation: FAIL if m = n
NOT <m>                        BTW its an unary negation: WIN if m = FAIL
ALL OF <m> AN <n> ... MKAY     BTW it will take infinite arguments and apply AND
ANY OF <m> AN <n> ... MKAY     BTW it will take infinite arguments and apply OR.

请注意< m>和< n>在上面的表达式语法中,如果它们不是TROOF值,则会自动转换为TROOF值.

比较

当你想比较两个或更多时在LOLCODE中的操作数,您可以通过以下任何方法执行此操作 :

方法1

您可以使用相等运算符比较两个二进制操作数.语法如下所示 :

BOTH SAEM <m> AN <n>   BTW this will return WIN if m is equal to n
DIFFRINT <m> AN <n>    BTW this will return WIN if m is not equal to n

方法2

你可以比较两个值是否会返回WIN属于NUMBR类型.请记住,如果其中任何一个值为NUMBAR,则将它们作为浮点值进行比较.

方法3

您还可以使用最小和最大运营商.语法如下所示 :

BOTH SAEM <m>   AN BIGGR OF <m> AN <n>

BOTH SAEM <m>  AN SMALLR OF <m> AN <n>
DIFFRINT <m>  AN SMALLR OF <m> AN <n>
DIFFRINT <m> AN BIGGR OF <m> AN <n>

示例

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< expression> A< type>

其中,< type>可以是TROOF,YARN,NUMBR,NUMBAR或NOOB之一.

要将变量显式转换为其他类型,可以使用带MAEK运算符的正常赋值语句,或者铸造赋值语句可以如下使用 :

 
< Any_variable>现在是< type>顺便说一下,这段代码将等于
< Any_variable> R MAEK< variable> A< type>

示例

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