From a3ab2f449f28b5e1f0bd7a3396d43ea2c71c5fd0 Mon Sep 17 00:00:00 2001 From: A4-Tacks Date: Mon, 27 Jan 2025 18:54:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=99=E7=A8=8B=E6=B7=BB=E5=8A=A0=E5=AF=B9?= =?UTF-8?q?=E7=9F=AD=E8=B7=AF=E7=9A=84=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/learn.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/examples/learn.md b/examples/learn.md index 119a1b2..175004c 100644 --- a/examples/learn.md +++ b/examples/learn.md @@ -576,6 +576,11 @@ case 4: > 和 DExp 有类似作用, 不过它的优先级是溢出的, 在许多地方需要加上括号使用 > > `!` 运算并不实际存在, 它使用德摩根变换来反转内部条件, 直到反转到简单条件后结束 +> +> `&&` 和 `||` 运算是短路的, 即: +> - `a && b` 在 a 不成立时, 直接返回不成立, 并不会计算 b 是否也不成立 +> - `a || b` 在 a 成立时, 直接返回成立, 并不会计算 b 是否也成立 +> 合理使用这种短路特性可以带来许多便利 简单语句 @@ -650,6 +655,13 @@ i, x = 2, abs(a-b) + sqrt(a)*2; 同时也提供三元运算等, 详见 [op-expr](./op_expr.mdtlbl) +> [!NOTE] +> op-expr 提供的 `||` 和 `&&` 运算优先级和 CmpTree 类似, 但是并不具备短路特性, +> 即 `a && b` a 为假 b 就不求值, `a || b` a 为真 b就不求值. +> +> op-expr 的 `||` 和 `&&` 是使用 `+` 和 `land` 实现的, +> 只是为了有方便的优先级进行逻辑运算 + 关于注释 ===============================================================================