首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个或-声明的优先级重要吗?

一个或-声明的优先级重要吗?
EN

Stack Overflow用户
提问于 2018-01-04 08:29:44
回答 4查看 627关注 0票数 3

假设我有一段代码:

代码语言:javascript
复制
age = 21;
allowedFromParents = false;
if (age >= 18 || allowedFromParents == true)
{
    //go drink
}

当我调试这部分代码时,当它检查第一部分(这是正确的)时,它已经在语句中运行,而不需要检查另一条语句。

现在,这只是一个简单的条件,但是如果条件语句要计算的要大得多,在一个频繁的循环中,其中一个会比另一个更有可能返回一个真。

那么,条件的顺序对性能有影响吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-01-04 08:37:55

你现在看到的是短路评估。

正如您所猜测的那样,条件语句的顺序可能会影响性能:如果其中一个语句是,则计算起来要重得多,并且它是在一个紧循环中完成的,那么可以考虑将另一个语句放在首位。

然而,

过早的优化是一切邪恶的根源-- DonaldKnuth

这意味着,除非在这段代码中测量了的性能瓶颈,否则编写时应该考虑到可读性,而不是性能。

票数 4
EN

Stack Overflow用户

发布于 2018-01-04 08:32:17

是的,这很重要。如果第一个条件是真的,那么它将停止评估其余的条件。换句话说,右边的条件可能是不计算的。

如果其中一个操作数或两个操作数都为真,则逻辑OR运算符返回布尔值true,否则返回false。在计算之前,操作数被隐式转换为bool类型,结果是bool类型。逻辑OR具有从左到右的结合性。

https://msdn.microsoft.com/fi-fi/library/f355wky8(v=vs.120).aspx

票数 4
EN

Stack Overflow用户

发布于 2018-01-04 08:48:24

将需要更多时间执行的条件放在右边,因此如果左边的条件计算为true,则不会检查第二个条件。

是的,如果您处于一个紧密的循环中,在最坏的情况下会迭代上千次,那么它肯定会提高性能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48091365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档