📄 formulas_2__operators.html
字号:
<html><head><meta name="robots" content="index,follow">
<title>算式 2. 运算符</title></head><body bgcolor="#FFFFFF">
<table border=0 cellpadding=0 cellspacing=0><tr><td bgcolor="#CCCC00"><table border=4 cellpadding=9><tr><td align=middle bgcolor="#000000"><font face="Palatino,Times" size=6 color="#999900"><b>
算式 2. 运算符
</b></font></table></table>
<p>
本文将详述可以在算式中使用的数值与逻辑运算符。运算符结算的顺序同普遍为编程语言所采用的顺序相一致。可以用圆括号强制改变优先顺序。</p>
<p>
优先级最高的运算符是<b>负号</b>(-)和<b>幂运算符</b>(^):</p>
<code>
--6 -> 6<br></code>
<code>
2^6 -> 64<br></code>
<p>
负号跟幂运算符之间,按从右向左的结合顺序结算:</p>
<code>
2^-6 -> 0.015625<br></code>
<code>
-(1+1)^6 -> -64<br></code>
<code>
4^3^2 -> 4^9 -> 262144<br></code>
<p>
注意:改变中间空格的多少有无,不会改变算式的意义:</p>
<code>
4^3 ^ 2 -> 262144<br></code>
<p>
要改变结算顺序,必须使用圆括号:</p>
<code>
(4 ^ 3) ^ 2 -> 4096<br></code>
<p>
不允许使用像下面这样的结构,因为无法断定到底是负数的幂还是幂的相反数:</p>
<code>
-2^6 -> ?<br></code>
<p>
请改用如下方式:</p>
<code>
(-2)^6 -> 64<br></code>
<code>
-(2^6) -> -64<br></code>
<code>
-(2)^6 -> -64<br></code>
<p>
仅次于最高优先级的运算符是<b>乘号</b>(*)和<b>除号</b>(/),按从左向右的结合顺序结算:</p>
<code>
1/4*5 -> 1.25 (从左向右的结合顺序)<br></code>
<code>
1 / 4*5 -> 1.25 (有空格也一样)<br></code>
<code>
1 / (4*5) -> 0.05 (利用圆括号改变结算顺序)<br></code>
<code>
3 * 2 ^ 4 -> 48 (幂运算较乘法优先)<br></code>
<code>
3*2 ^ 4 -> 48 (这里的空格不但不起作用,还会误导人)<br></code>
<code>
(3 * 2) ^ 4 -> 1296 (利用圆括号改变结算顺序)<br></code>
<p>
<b>整除</b>运算符(<b>div</b>和<b>mod</b>)跟*与/处于同一优先级,且同样按从左向右的结合顺序结算:</p>
<code>
54 div 5 -> 10 (求整数商)<br></code>
<code>
54 mod 5 -> 4 (求余数)<br></code>
<code>
54.3 div 5.1 -> 10 (实数型也可以求整数商)<br></code>
<code>
54.3 mod 5.1 -> 3.3 (或者求余数)<br></code>
<code>
-54 div 5 -> -11 (求整数商;做除法之前先取反)<br></code>
<code>
-54 mod 5 -> 1 (或者求余数)<br></code>
<code>
-(54 div 5) -> -10 (利用圆括号改变结算顺序)<br></code>
<code>
-(54 mod 5) -> -4<br></code>
<code>
3 * 18 div 5 -> 10 (从左向右的结合顺序)<br></code>
<code>
3 * (18 div 5) -> 9<br></code>
<code>
3 * 18 mod 5 -> 4<br></code>
<code>
3 * (18 mod 5) -> 9<br></code>
<code>
54 div 5 * 3 -> 30 (从左向右的结合顺序)<br></code>
<code>
54 div (5 * 3) -> 3<br></code>
<code>
54 mod 5 * 3 -> 12<br></code>
<code>
54 mod (5 * 3) -> 9<br></code>
<p>
往下优先级更低的是<b>加号</b>(+)和<b>减号</b>(-),按从左向右的结合顺序结算:</p>
<code>
3 - 8 + 7 -> 2 (从左向右的结合顺序)<br></code>
<code>
3 - (8 + 7) -> -12 (利用圆括号改变结算顺序)<br></code>
<code>
3 + 8 * 7 -> 59 (先做乘法,后做加法)<br></code>
<code>
(3 + 8) * 7 -> 77 (利用圆括号改变结算顺序)<br></code>
<code>
3 + - 2 ^ 4 -> -13 (求幂,取反,相加)<br></code>
<code>
3 + 5 / 2 + 3 -> 8.5<br></code>
<code>
(3 + 5) / (2 + 3) -> 1.6<br></code>
<p>
往下优先级更低的是<b>比较</b>运算符(= <> < > <= >=)。这些运算符得到的结果只有0(<i>假</i>)和1(<i>真</i>)两种:</p>
<code>
5 + 6 = 10 -> 0 (等于)<br></code>
<code>
5 + 6 = 11 -> 1<br></code>
<code>
5 + 6 <> 10 -> 1 (不等于)<br></code>
<code>
5 + 6 <> 11 -> 0<br></code>
<code>
5 + 6 < 10 -> 0 (小于)<br></code>
<code>
5 + 6 < 11 -> 0<br></code>
<code>
5 + 6 > 10 -> 1 (大于)<br></code>
<code>
5 + 6 > 11 -> 0<br></code>
<code>
5 + 6 <= 10 -> 0 (小于或等于)<br></code>
<code>
5 + 6 <= 11 -> 1<br></code>
<code>
5 + 6 >= 10 -> 1 (大于或等于)<br></code>
<code>
5 + 6 >= 11 -> 1<br></code>
<p>
比较运算符主要在<b>if</b>、<b>while</b>和<b>until</b>结构里作为条件使用。</p>
<p>
优先级最低的运算符是<b>逻辑</b>运算符(<b>not</b>、<b>and</b>和<b>or</b>),其中<b>not</b>优先级最高而<b>or</b>最低:</p>
<code>
not 5 + 6 = 10 -> 1<br></code>
<code>
x > 5 and x < 10 (x是否在5和10之间?)<br></code>
<code>
not x <= 5 and not x >= 10 (同上)<br></code>
<code>
not (x <= 5 or x >= 10) (同上)<br></code>
<h3>
字符串比较</h3>
<dl>
<dt>
<b>a$ = b$</b>
<dd>
如果字符串完全相同,结果为<i>真</i>(= 1),否则为<i>假</i>(= 0)。
<dt>
<b>a$ <> b$</b>
<dd>
如果字符串不完全相同,结果为<i>真</i>,否则为<i>假</i>。
<dt>
<b>a$ < b$</b>
<dd>
按ASCII(美国信息交换标准码)排序,如果字符串<i>a$</i>在字符串<i>b$</i>之前,结果为<i>真</i>。由此可得"ha" < "hal"以及"ha" < "ja"为真。但"ha" < "JA"为假,因为在ASCII顺序中,所有大写字母排在所有小写字母之前。
<dt>
<b>a$ > b$</b>
<dd>
按ASCII排序,<i>a$</i>在<i>b$</i>之后,结果为<i>真</i>。
<dt>
<b>a$ <= b$</b>
<dd>
按ASCII排序,如果字符串<i>a$</i>在字符串<i>b$</i>之前,或者两者完全相同,结果为<i>真</i>。
<dt>
<b>a$ >= b$</b>
<dd>
按ASCII排序,<i>a$</i>在<i>b$</i>之后,或者两者完全相同,结果为<i>真</i>。
</dl>
<h3>
字符串连接与分割</h3>
<dl>
<dt>
<b>a$ + b$</b>
<dd>
连接两个字符串。比如运行
</dl>
<code>
text$ = "hallo" + "dag"<br></code>
<dl>
<dd>
之后,变量<i>text$</i>将包含字符串"hallodag"。
<dt>
<b>a$ - b$</b>
<dd>
将第2个字符串从第1个字符串的末尾减去。比如运行
</dl>
<code>
soundFileName$ = "hallo.aifc"<br></code>
<code>
textgridFileName$ = soundFileName$ - ".aifc" + ".TextGrid"<br></code>
<dl>
<dd>
之后,变量<i>textgridFileName$</i>将包含字符串"hallo.TextGrid"。如果第1个字符串<i>a$</i>并不以字符串<i>b$</i>结尾,则相减的结果仍然是字符串<i>a$</i>。
</dl>
<h3>指向本页的链接</h3>
<ul>
<li><a href="Formulas.html">算式</a>
</ul>
<hr>
<address>
<p>© ppgb, February 11, 2003</p>
<p>© 翻译:徐清白,2005年02月06日</p>
</address>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -