跳到主要内容
Varlig 指南
Varlig 首页

运算符、比较与条件

本页介绍用来组合数值的符号和词语:算术运算、运算的先后顺序、回答 truefalse 的比较,以及逻辑运算符和位运算符。如果某一行算出的数字和你预想的不一样,或者你想让笔记帮你检查某件事(比如是否还在预算之内),就来这里看看。

算术运算

运算符 写法 示例 结果
+plus £12.50 + £4.30 £16.80
-minus £20 - £4.50 £15.50
*×timesmultiplied by、省略乘号 3 × £4.502(3 + 4) £13.5014
/÷divided by £60 / 4 £15.00
乘方 ^**to the power ofraised toexponent 2 ** 32 raised to 10 81,024
取余 mod%(位于两个数字之间) 50 mod 650 % 6 2
平方根 sqrt(...)square root of √144 12
平方 / 立方 ²³ 27
阶乘 !factorial(...) 5!factorial(5) 120

算术运算适用于普通数字、金额和带单位的数量,答案会保留货币或单位:

calc
£12.50 + £4.30 结果为 £16.80
3 * £4.50 结果为 £13.50
£1,000 * 1.05^3 结果为 £1,157.63
6 times 7 结果为 42
100 minus 37.5 结果为 62.5

省略乘号是指不写 *,例如 2(3 + 4)隐式乘法一节说明了这种写法什么时候有效、什么时候无效。

运算顺序

计算遵循学校数学课上学过的常规顺序:

  1. 括号。
  2. 阶乘,例如 5!
  3. 乘方,从右往左计算:2^3^2 就是 2^9,即 512。
  4. 开头的负号,在乘方之后计算:-2^2 是 -4,而 (-2)^2 是 4。
  5. 乘法、除法和 mod,从左往右计算。
  6. 加法和减法,从左往右计算。

省略 * 不会改变这个顺序,所以 2x^2 会先求 x 的平方再乘以 2,和课本上的公式一样。

也就是说,乘法会先于旁边的加减法计算。算账时,这一点很容易让人出错:

calc
£85 - £12.50 * 2 结果为 £60.00
(£85 - £12.50) * 2 结果为 £145.00
£120 / 4 / 2 结果为 £15.00

拿不准的时候就加上括号。括号不会有任何坏处,还能让笔记日后读起来更清楚。

根号只作用于紧跟在它后面的值,所以 √9 + 16 是 19。要对一个和开平方,请把整个表达式放进括号:

calc
(9 + 16) 结果为 5

余数

mod 给出除法之后剩下的部分,适合用来分组:

calc
鸡蛋 = 50
鸡蛋 mod 6 结果为 2
floor(鸡蛋 / 6) 结果为 8

五十个鸡蛋可以装满八盒(每盒六个),还剩两个。

位于两个数字之间的 % 也表示取余,即使第二个数字前面没有空格也一样:50 % 650% 6 的结果都是 2。% 后面什么都没有时表示百分比(50%),详见百分比

阶乘

在数字、名称或右括号后面紧跟 !,即可求阶乘:

calc
5! 结果为 120
跑者 = 4
跑者! 结果为 24
3! + 2 结果为 8
5!=4 结果为 true

阶乘先于旁边的乘方计算,所以 2^3! 是 2⁶,即 64。如最后一行所示,! 后面紧跟 = 时仍表示“不等于”。factorial(5)5! 的结果相同。

比较

==!=<<=>>= 用来比较两个值,并回答 truefalse。它们适用于普通数字、同一货币的金额,以及衡量同一种量的数量,即使单位不同也可以:

calc
预算 = £400
已花费 = £365
已花费 <= 预算 结果为 true
已花费 == 预算 结果为 false
已花费 != 预算 结果为 true
5 km == 5,000 m 结果为 true
90 min >= 1.5 hours 结果为 true
2 kg < 2,500 g 结果为 true

比较之前会先换算单位,所以 1 mile > 1.5 kmtrue。比较衡量不同量的值(例如千克和米)会得到 incompatible units 错误。

比较不支持的写法

  • 连续比较:不支持 5 < x < 10。请改为组合两个比较:5 < x && x < 10
  • Unicode 符号:无法识别 。请使用 !=<=>=
  • 日期:不能用 <> 比较两个日期。请把它们相减,再将差值与一段时长比较:
calc
截止日期 = 30 September 2026
预订日期 = 14 September 2026
截止日期 - 预订日期 结果为 2 weeks 2 days
截止日期 - 预订日期 >= 7 days 结果为 true

逻辑运算符

&&(两者都必须为真)或 ||(至少一个为真)连接比较。在两个比较之间,单词 andor 的作用相同。

calc
距离 = 5 km
用时 = 27 min
距离 >= 5 km && 用时 < 30 min 结果为 true
距离 >= 10 km || 用时 < 25 min 结果为 false
距离 >= 10 km or 用时 < 30 min 结果为 true

truefalse 可以直接书写,并用 &&|| 组合:

calc
true || false 结果为 true
true && false 结果为 false

有些你可能以为可行的写法并不支持:

  • andor 只能用在比较之间。true and false 无效,请写成 true && false
  • 没有取反运算符:not true!true 都无效。请改为与 false 比较,例如 (已花费 > 预算) == false
  • or 不能作为出错时的备用值:1/0 or 5 不会得到 5。

在条件中使用比较

比较最有用的地方是 if … then … else …,它会根据比较结果选出一个值:

calc
购物篮 = £34.50
if 购物篮 >= £40 then £0 else £3.99 结果为 £3.99

条件一节介绍了完整的语法,包括 else if、后置 ifunless,以及在分支中赋值。

位运算符

整数支持位运算符 &(与)、|(或)、xor<<(左移)和 >>(右移)。大写单词 ANDORXOR 也可以使用。这些运算符主要用于编程相关的任务,例如颜色值和文件权限。

calc
12 & 10 结果为 8
12 | 10 结果为 14
12 xor 10 结果为 6
12 AND 10 结果为 8
1 << 10 结果为 1,024
1024 >> 3 结果为 128

答案显示为普通数字。加上 to binaryin hexto octal,即可用你正在使用的进制查看:

calc
0o644 | 0o111 to octal 结果为 0o755
颜色 = 0xFF8800
(颜色 >> 8) & 0xFF 结果为 136

移位先于 &|xor 计算,但加上括号能让颜色示例这样的行更容易看懂。

综合运用

下面是一份每月预算检查,同时用到了算术、比较和逻辑:

calc
# 九月预算
到手收入 = CNY 12,000
房租 = CNY 4,500
水电网费 = CNY 800
买菜 = 4 * CNY 450 结果为 1,800.00 CNY
结余 = 到手收入 - 房租 - 水电网费 - 买菜 结果为 4,900.00 CNY
房租 / 到手收入 as % 结果为 37.5%
结余 > CNY 3,000 结果为 true
结余 > CNY 3,000 && 房租 <= 到手收入 * 45% 结果为 true

买菜 先做乘法,再参与其他加减运算;结余 则从左往右依次相减。最后两行把笔记变成了一项检查:只要结余超过 CNY 3,000,并且房租不超过到手收入的 45%,答案就保持为 true;其中任何一个条件不再满足,答案就会立刻变成 false