运营商在对变量执行各种操作方面发挥着重要作用.本章为您提供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中的操作数,您可以通过以下任何方法执行此操作 :
您可以使用相等运算符比较两个二进制操作数.语法如下所示 :
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
你可以比较两个值是否会返回WIN属于NUMBR类型.请记住,如果其中任何一个值为NUMBAR,则将它们作为浮点值进行比较.
您还可以使用最小和最大运营商.语法如下所示 :
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