问题标签 [short-circuiting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1043 浏览

c# - 为什么 `bool?` 上没有解除短路运算符?

为什么不bool?支持解除&&||?他们本可以解除trueandfalse运算符,而这会间接添加解除&&and ||

运算符|&已经被解除并实现了正确的三值逻辑||但是,它们当然不会像和那样短路&&

问题是为什么他们决定在创建规范时不取消这些运算符。所以“就像这样,因为规范是这样说的”并不能回答“为什么?”。

举起时,true既不是,也不是:falsenulltruefalse

这将导致&&||行为就像它们的非短路对应物一样。除了false && anythingandtrue || anything会短路(false并且true在这两个示例中没有编译时间常数)。

这与MSDN 上的 DBBool 示例非常相似。

我没有看到解除这些操作员带来的令人惊讶或危险的行为。我错过了什么?

我已经阅读了另一个关于此的 SO 问题,但没有一个令人满意的答案。


trueJeff Yates 的回答显示了为什么提升/运算符不是最佳的一个很好的理由false,它没有解释为什么提升&&||直接是不好的。由于运算符提升是特殊情况下的编译器魔法,Nullable<T>因此它不需要遵循普通类型的重载规则,因此能够提供&&/||不提升true

0 投票
7 回答
42308 浏览

c++ - C++如何处理&&?(短路评估)

当遇到 (bool1 && bool2) 时,如果 bool1 被发现为假,c++ 是否会尝试检查 bool2 还是会像 PHP 那样忽略它?

对不起,如果这是一个太基本的问题,但我真的在 Schildt 和互联网上都找不到提及。

0 投票
4 回答
818 浏览

c# - 为什么短路不能防止与逻辑 AND (&&) 的不可达分支相关的 MissingMethodException?

在检查我的 Windows 移动设备上是否存在并启用了摄像头时,我遇到了一些我不明白的事情。

代码如下所示:

当我调用CameraPresent2()它时返回 false(没有相机存在)。但是当我打电话时,CameraPresent1()我收到一个 MissingMethodException 并带有注释“找不到方法:get_CameraEnabled Microsoft.WindowsMo​​bile.Status.SystemState”。

CameraPresent1是否仅仅因为它们都是财产(在语言级别)而评估第二个术语?

还有什么可以解释行为差异的吗?

0 投票
5 回答
5026 浏览

ruby - || 运算符,结果已知时返回?

我有一个类似于以下的功能:

我的问题是,即使第一个为真,Ruby 是否会执行所有比较,因此函数返回真。我的检查更加密集,所以我想知道我是否应该以不同的方式将其分解,以避免每次都进行所有检查。

谢谢你。

0 投票
3 回答
6359 浏览

c# - 有 c# 吗?操作员短路?

在C#中使用??运算符时,如果被测试的值不为空,是否会短路?

例子:

test3 行成功还是抛出空引用异常?

所以用另一种方式来表达这个问题:右手会表达 ?? 如果左手不为空,则对运算符进行评估?

0 投票
3 回答
75 浏览

c# - 将变量设置为特定值后立即返回。等式重载

我正在重载 Equality 方法以进行值比较,并且想知道是否有一种干净的方法可以false在其中一个值比较返回 false 时立即返回。例如,这是基本思想:

_valOne' 不等于。最有效的比较方法是在false知道两个值不相等时立即返回。类似于以下内容...

所以现在在比较_valOnes 之后不再进行值比较。这似乎非常重复、笨拙,而且(最重要的是)可读性很差。我想知道是否有任何方法可以在不使用 && 运算符的情况下以干净的方式将这段代码简化为相同的效果。

0 投票
7 回答
4697 浏览

sql - SQL Server 条件流

SELECT如果我在一个IF EXISTS条件中编写两个语句,AND在这些选择查询之间有一个子句,即使第一个SELECT返回 false,两个查询是否都会执行?

SQL Server 引擎在这种情况下是否同时执行 SQL 语句?

谢谢克里什

0 投票
2 回答
295 浏览

java - Java递归问题

这是我的一个课程中的一段代码:

本质上,我想要的是仅当下一个数组级别中的四个相应对象的标志也为真时,才将一个 SomeClass 对象的标志设置为真。不幸的是,我似乎遇到了这个问题:

看起来它只是检查第一个条件(我在计数器中添加了所以检查 someFunction 被调用了多少次,它只上升到 6,而不是我应该得到的 1365);您不能在 Java 中的 if 语句中执行多个函数调用吗?还是我做错了?

(顺便说一下格式,这是我第一次在这里发帖)

0 投票
1 回答
1738 浏览

java - JSF(P) EL 的短路运算符

JSF、JSP 中使用的表达式语言是否存在短路运算符?

我的意思是 &&||Java 类比,如果很明显进一步评估布尔值没有意义,则停止评估。

我观察到 , 运算符的用法andor看起来它们没有短路。

0 投票
8 回答
29419 浏览

php - PHP有短路评估吗?

给定以下代码:

如果is_valid($string)返回false,php 解释器是否仍会检查以后的条件,例如up_to_length($string)
如果是这样,那为什么它不需要做额外的工作呢?