在 F# 中,布尔逻辑运算符的优先级从高到低如下(括号可显式改变优先级):
优先级顺序(高 → 低)
-
not- 一元逻辑非运算符(最高优先级)
- 示例:
not true→false
-
&&- 逻辑与运算符(短路求值)
- 示例:
true && false→false
-
||- 逻辑或运算符(短路求值)
- 示例:
true || false→true
关键规则
-
短路求值(Short-Circuiting),也称惰性计算:
&&:若左侧为false,右侧不计算。||:若左侧为true,右侧不计算。
-
结合性:
&&和||均从左向右结合。- 示例:
a && b && c→(a && b) && c
- 示例:
示例与优先级验证
// 示例 1:not 优先于 &&
not true && false // = (not true) && false → false && false → false// 示例 2:&& 优先于 ||
true || false && false // = true || (false && false) → true || false → true// 示例 3:显式括号改变优先级
not (true && false) // = not (false) → true
完整运算符表(部分相关)
| 运算符 | 描述 | 优先级组 |
|---|---|---|
not |
逻辑非 | 最高 |
&& |
逻辑与 | 中 |
|| |
逻辑或 | 最低 |
提示: 不妨把
not看作数字运算中的负号-,&&看作乘号×,||看作加号+,那么优先级也就一目了然了。
