如果你的 JASS 功力已经过了入门级,那么请跳过这一楼,直接到下面灌水
这里来说一下 JASS 滴N则运算法则:
那就是 —— 和你数学课本上的运算法则相同
~括号->次幂->乘除->加减~
这和其他某些语言略有不同(那些语言大多照从左到右顺序运算)。
不过,有一点要特别注意:
integer 的运算结果仍索 integer
real 的运算结果仍索 real
—— 哦?看起来象废话?
那让我们来看一看下面这个例子:
这是 BLIZZARD.J 里一个计算余数的函数的主要部分:
local integer modulus = dividend - (dividend / divisor) * divisor
这个函数接受两个 integer 型变量 —— 一个作为被除数的 dividend ,以及
一个作为除数的 divisor 。并返回一个 integer 型的 modulus ,即余数。
所以,把它写成小学数学课本上的公式就成了:
余数 = 被除数 - (被除数 ÷ 除数)× 除数
现在,有些细心的同志已经发现了:“(被除数 ÷ 除数)× 除数” 不就索被除数吗?
然后用被除数来减被除数不就变成 0 了?这个函数无论如何都只会返回 0 啊!
错老~~
大家还记得这个法则吗?
integer 的运算结果仍索 integer
real 的运算结果仍索 real
这里指的“运算结果”包括了运算过程中的每一步运算。下面让我们来重新认识一下刚才那条语句:
local integer modulus = dividend - (dividend / divisor) * divisor
比如,我们传递给它两个参数(18, 5)
那么,它先计算:
18÷5=?
可是,关键就在这里。由于integer 的运算结果仍索 integer
所以,“18÷5”的结果对 JASS 来说并不是很多人想象中的“3.6”,而是“3”!
接下去的,就好解释了:
3×5 =15
18-15=3
而“18除以5”确实余3,完全正确!
好了,JASS 的N则运算法则暂时说完老~
责任编辑:瞳瞳
进入论坛参与针对本文章的讨论
