问题标签 [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 投票
2 回答
103 浏览

python - 在表达式中用“或”捕获 None 的值

我在代码审查中遇到了这个:

我的第一反应是“啊啊啊糟糕!” 但转念一想……是吗?

0 投票
1 回答
947 浏览

c++ - 有人可以解释这个 C++ 逗号运算符短路示例吗?

有人可以解释这个 C++ 逗号运算符短路示例吗?

为什么第二个版本短路并返回false(至少在 MSVC++ 中),而其他两个版本没有但返回true

0 投票
4 回答
9133 浏览

erlang - 在警戒测试中何时更喜欢 `and` 而不是 `andalso`

我很好奇为什么逗号‹,›是守卫测试的快捷方式and而不是andalso守卫测试。

由于我称自己为“C 本地人”,因此我看不到短路布尔评估的任何缺点。

我使用该标志编译了一些测试代码,to_core以查看实际生成的代码。使用逗号,我看到左手值和右值和值被评估并且两者都被评估。你在andalsocase 块中有一个 case 块,并且没有调用erlang:and/2.

我没有进行基准测试,但我敢说该andalso变体是更快的变体。

0 投票
2 回答
882 浏览

c++ - 按位或保证评估顺序?

说我有这个代码:

C++ 是否保证首先调用 func1(),然后是 func2(),然后是 func3()?

或者编译器是否允许以任何感觉的顺序调用函数?

另外,如果编译器愿意,是否允许在这里实现短路优化?(例如,如果 func1() 返回 ~0,编译器是否可以决定不打扰调用 func2() 或 func3(),因为它知道它们的返回值不可能影响分配给 x 的值?)

0 投票
6 回答
467 浏览

python - python中的“if var and var2 == getSomeValue()”-如果第一个为假,则评估第二个语句吗?

我有一些这样的代码:

这可以在一个表达式中。

...但getSomeValue()只能在var为 True 时调用。

那么,在调用时if var and var2 == getSomeValue(),都由解释器评估,还是评估在varif处停止False?在哪里可以找到有关 python 文档的这些信息?(我不知道要搜索什么...:/)

0 投票
4 回答
1252 浏览

ada - Ada 短路控制形式

什么意思

是吗

(如果 x 为 FALSE,则永远不会评估 y,z)或

(如果 x 为 FALSE,则跳过 y,但可能会评估 z)在 ada 中?

0 投票
2 回答
137 浏览

oracle10g - 有人可以帮我弄清楚 Oracle 的 (10g) AND/OR 短路吗?

考虑以下查询并注意 CALCULATE_INCENTIVE 函数:

我的印象是 Oracle 使用了与 .NET 在其和/或逻辑中使用的相同(或相似)短路。例如,如果 EMP.STATUS = 2,它不会计算表达式的其余部分,因为整个表达式无论如何都会返回 false。

在我的例子中,CALCULATE_INCENTIVE 函数在数据库中的每个员工上被调用,而不是仅仅在前三个 WHERE 表达式返回的 9 条记录上被调用。我什至尝试在我想组合在一起进行短路评估的特定表达式周围加上括号,但我无法弄清楚。

如果前面的任何表达式返回 false,任何人都知道如何让 CALCULATE_INCENTIVE不被评估?

0 投票
4 回答
63852 浏览

python - Python 中使用的 & 和竖线字符在哪里?

描述短路评估的维基百科页面&中,|被列为 Python 中的急切运算符。这是什么意思,什么时候在语言中使用它们?

0 投票
4 回答
4593 浏览

c++ - 有没有像“std::and”或“std::or”这样的东西?

给定一个布尔值容器(一个例子是),如果所有值都是(“and”)或者如果至少一个值是(“or”) std::vector<bool>,是否有一个标准函数返回短路评估?truetruetruetrue

我今天早上在www.cplusplus.com 上进行了挖掘,但找不到任何接近的东西。

0 投票
6 回答
129 浏览

c - 以下两种情况是否有性能差异?

以下两种情况之间是否有任何性能差异:
首先:

第二:

更新:我知道如何创建测试并测量每个案例的性能或查看为每个案例生成的组件,但我确信我不是第一个遇到这个问题的人,如果有人有已经测试过,可以是我一个简单的是/否答案。