具有多个条件的 if 的执行顺序

2023-12-19

在具有多个条件的 if 语句中,如果第一个条件的结果明确,是否会执行第二个条件?

example:

if(i>0 && array[i]==0){
}

如果我交换条件,i 的负值可能会发生段错误,但这样就不会发生段错误。我可以确定这总是有效还是必须使用嵌套的 if 语句?


这种类型的评估称为短路 http://en.wikipedia.org/wiki/Short-circuit_evaluation。 一旦结果100%明确,就不再继续评估。

这实际上是一种常见的编程技术。 例如,在 C++ 中你经常会看到类似这样的内容:

if (pX!=null && pX->predicate()) { bla bla bla }

如果更改条件的顺序,则可能会调用空指针上的方法并导致崩溃。当您有指向该结构的指针时,C 中的类似示例将使用该结构的字段。

你可以用 or 做类似的事情:

if(px==null || pX->isEmpty()} { bla bla bla }

这也是避免 if 条件中的副作用通常是个好主意的原因之一。

例如,假设您有:

if(x==4 && (++y>7) && z==9)

If x is 4, then y无论值如何都会增加z or y,但如果x is not 4,它根本不会增加。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有多个条件的 if 的执行顺序 的相关文章

随机推荐

  • 在 API Gateway 或 lambda 中将一些信息保存为会话

    我将在网站上设计一个单点登录 并在我的项目的一个组件中使用 API Gateway API网关负责根据用户状态将其定向到适当的服务 因此如果用户有效 用户发送的令牌未过期 则将提供用于获取他请求的内容的相关服务 并且如果从UI 已过期 那么
  • SwiftUI 连接多行可点击文本

    我应该通过一个动作从一组文本创建一个文本 一个例子 Text Lorem ipsum dolor sit amet consectetur adipiscing elit Donec metus urna mollis sit amet t
  • Angular 8:将 Mat-form-field 中的高度更改为特定像素数

    我怎样才能改变高度mat form field with appearance outline 到特定的高度像素数 40px 或用户体验团队将来所需的任何数字 我需要减少 mat form field 如何才能做到这一点 等式是什么 或者可
  • 如何在 MYSQL 中运行查询而不将其写入二进制日志

    我想将一个大文件导入 MySQL 但是 我不希望将其写入二进制日志 因为导入将花费很长时间 并导致从站远远落后 我宁愿在事后在从站上单独运行它 因为它在系统上会容易得多 有问题的表是一个新表 因此我真的不必担心它不同步 因为主表和所有从表最
  • 如何显示 DOMElement?

    我在用着可读性 http bazaar launchpad net keyvan k1m fivefilters content only annotate head readability php的代码从网页中提取 HTML 如何将其显示
  • str.split() 的分割顺序有任何保证吗?

    根据Python 2 7 文档 https docs python org 2 7 library stdtypes html str split using str split with maxsplit指定将字符串拆分为maxsplit
  • 删除所有 PostgreSQL 视图

    如何使用查询从 PostgreSQL 删除所有用户定义的视图 就像我们可以使用查询删除所有函数 SELECT DROP FUNCTION ns nspname proname oidvectortypes proargtypes FROM
  • 在 C# 中将 XML 字符串解析为类? [复制]

    这个问题在这里已经有答案了 可能的重复 如何反序列化 XML 文档 https stackoverflow com questions 364253 how to deserialize xml document 假设我有一个在 C 中定义
  • 以编程方式更改数据后重新渲染 ng2-google-chart

    我在用ng2 google chart而且效果很好 现在我想使用一些复选框来选择图表中显示哪些数据 我的图已连接到数组chartData 选择后更新正确 但图表没有改变 这是我的图表 div div 有没有办法在数据更改后重新渲染它 同时我
  • 设置在 Spring MVC 中不起作用

    PROBLEM 我想向用户显示自定义错误页面 简而言之
  • 如何访问 Knockout 组件中的自定义元素?

    看看这个场景 ko components register hello viewModel function template h1 hello wrold h1 如果我使用
  • 卡夫卡生产者批量大小

    我有一个相关问题batch size生产者配置 当发生什么batch size已经达到并且生产者应用程序线程发送更多数据 线程是否会阻塞 直到包含批处理的缓冲区中的空间可用为止 batch size以总字节数而不是消息数来衡量批量大小 它控
  • 如何使用 RSpec 在 Rails 测试环境中加载 Seed.rb?

    我有以下 seeds rb 文件 State create name gt Alabama abbreviation gt AL name gt Alaska abbreviation gt AK name gt Arizona abbre
  • CSS ::before ::after 类的伪元素不起作用

    我正在尝试添加一个 before and after菜单标题的伪元素 伪元素对于菜单外的常规链接效果很好 但是 当我尝试将它们应用到菜单项时 background属性已设置 但 before and after属性不是 这是相关的CSS c
  • Rails 资产用于开发而非生产

    古老的 我不懂链轮 问题 我在 app assets javascript jquery fancybox js 中有一个资产 我使用 来访问 加载它 这在开发中有效 但在生产中无效 我正在查看日志 但那里肯定发生了一些事情 因为我看不到它
  • Azure B2C 自定义重置密码策略

    我在 B2C 中有一些正在发挥作用的自定义策略 但我并没有尝试让重置密码发挥作用 我遇到的问题之一是 我调用 Restful API 来检查提供的电子邮件地址是否是本地用户 或者我们是否从 Microsoft AAD 登录它们 这工作正常
  • 如何在shiny中加载csv文件的文件夹

    我有一个 CSV 文件的文件夹 我想将它们作为闪亮的文件列表上传和访问 我尝试使用以下代码来上传文件 server output sourced lt renderDataTable inFile lt input file1 if is
  • ember.js + 把手:渲染 vs 出口 vs 部分 vs 视图 vs 控制

    每个周围都有分散的解释 但我仍然不是 100 清楚它们的差异和用法 有人可以给我一个横向比较吗 outlet outlet NAME render partial view control Note 这个帖子 https stackover
  • Grails WAR 热部署导致的“call 'refresh'”错误

    当我的 Grails WAR 热部署到 Tomcat 并刷新页面时 出现以下错误 2010 年 2 月 1 日 7 00 51 PM org apache catalina core ApplicationDispatcher 调用 严重
  • 具有多个条件的 if 的执行顺序

    在具有多个条件的 if 语句中 如果第一个条件的结果明确 是否会执行第二个条件 example if i gt 0 array i 0 如果我交换条件 i 的负值可能会发生段错误 但这样就不会发生段错误 我可以确定这总是有效还是必须使用嵌套