首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如果(A )那么如果( B)和如果(A和B)有什么区别吗?

如果(A )那么如果( B)和如果(A和B)有什么区别吗?
EN

Stack Overflow用户
提问于 2015-06-05 02:05:24
回答 3查看 262关注 0票数 3

if(A) then if(B)

vs

if(A and B)

哪一种更好用,为什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-05 02:12:00

给予:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (a) {
  if (b) {
    /// E1
  }
  /// E2
} else {
  // E3
}

人们可能会倾向于用以下文字来取代它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (a && b) {
 /// E1
} else {
 // E3
}

但是它们不是等价的(a= true和b= false表示它的反参数)。

除此之外,如果语言允许像AND,OR这样的短路操作,就没有理由不将它们链接起来。而且大多数人都允许这样做。表达式是等价的,您可以使用链式表单来提高代码的可读性。

票数 5
EN

Stack Overflow用户

发布于 2015-06-05 02:11:06

这取决于你的具体情况,但一般来说:

1) if (A and B)看起来更好/更干净。如果同时应用AB,那么下面的块将立即执行。

2)当if(A) then if(B)应用于A时,当您也想做某件事时,B会更好,但B不会。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (A):
    if (B):
        # something
    else:
        # something else

一般比

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (A and B):
    # something
if (A and not B):
    # something else
票数 4
EN

Stack Overflow用户

发布于 2015-06-05 02:16:24

你已经标记了这个‘算法’和‘逻辑’,从这个角度来看,我可以说没有什么不同。

然而,在实际编程语言中,可能存在也可能没有效率问题(甚至是可执行性问题)。

像C、C++和Java这样的编程语言保证在表达式A && B中首先计算A,如果没有计算false B的话。如果B在计算上很昂贵,或者如果A是假的,那么这会产生很大的影响。

考虑下面的C片段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int*x
//....
if(x!=NULL&&(*x)>10) {
//...

评估(*x)时,x==NULL很可能会导致致命错误。

这个“技巧”(称为短路评估)非常有用,因为它避免了编写稍微冗长一些的东西的需要:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(x!=NULL){
  if((*x)>10){

较早版本的VB,如VB6,因没有短路而臭名昭著。

另一种情况是,如果B为真,A || B中的A将不会被计算。

关于支持的讨论:

Do all programming languages have boolean short-circuit evaluation?

在任何提供短路并具有优化编译器的语言中,您可以假设代码效率不太可能有任何差异,并且可以使用最易读的语言。这通常是if(A&&B)

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

https://stackoverflow.com/questions/30663812

复制
相关文章
Leetcode No.181 超过经理收入的员工
Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。
week
2021/05/06
3930
leetcode-for-sql-收入超过经理的员工
大家好,我是Peter。本文讲解的是LeetCode-SQL的第181题目,难易程度:简单。
皮大大
2023/08/23
1840
☆打卡算法☆LeetCode 181. 超过经理收入的员工 算法解析
大家好,我是小魔龙,Unity3D软件工程师,VR、AR,虚拟仿真方向,不定时更新软件开发技巧,生活感悟,觉得有用记得一键三连哦。 一、题目 1、算法题目 “编写SQL查询,来查找收入比经理高的员工。” 题目链接: 来源:力扣(LeetCode) 链接: 181. 超过经理收入的员工 - 力扣(LeetCode) 2、题目描述 表:Employee  +-------------+---------+ | Column Name | Type | +-------------+---------+
恬静的小魔龙
2022/08/07
3800
☆打卡算法☆LeetCode 181. 超过经理收入的员工 算法解析
LeetCode-181 超过经理收入的员工---SQL语句实现及详解
解析: 这样就能判断出那个员工的薪资超过了经理。 为什么表这样设计呢??? 因为
贵哥的编程之路
2021/09/08
6010
「SQL面试题库」 No_10 超过经理收入的员工
「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试,代码能力和工作效率也会有明显提升。
不吃西红柿
2023/03/20
3870
2022-11-27:超过经理收入的员工。编写一个SQL查询来查找收入比经理高的员工。以下数据的结果输出是Joe,因为Joe是唯一挣得比经理多的雇员。 DROP
2022-11-27:超过经理收入的员工。编写一个SQL查询来查找收入比经理高的员工。以下数据的结果输出是Joe,因为Joe是唯一挣得比经理多的雇员。
福大大架构师每日一题
2022/11/27
6630
2022-11-27:超过经理收入的员工。编写一个SQL查询来查找收入比经理高的员工。以下数据的结果输出是Joe,因为Joe是唯一挣得比经理多的雇员。 DROP
我们是如何优化HAProxy以让其支持200万个并发SSL连接的?
仔细上上图,我们可以发现两个信息: 该机器建立了238万个TCP连接; 此时内存使用量大约在48G左右。 看上去很赞吧?如果有人能够提供配置,并且在单台部署HAProxy的服务器上完成这样规模的调优,是不是更赞?本文将详细描述这个过程;) 本文是一系列关于HAProxy压力测试文章的最后一篇。如果有时间,建议读者能够先阅读本系列的其余两部分。这样能够更好的帮助我们了解本文所提及的内核级别调优需要的一些背景知识。 HAProxy压力测试(第一部分) HAProxy压力测试(第二部分) 为了达到前面提到的效
用户1263954
2018/01/30
7.1K0
我们是如何优化HAProxy以让其支持200万个并发SSL连接的?
YouTube正测试屏蔽“广告拦截器”,以确保其广告收入
周三(6月28日),Reddit的一位用户发现,在使用YouTube时弹出了一个窗口,提示该用户禁止使用广告拦截器,否则他的播放器将在3个视频后自动关闭。
FB客服
2023/08/08
1K0
YouTube正测试屏蔽“广告拦截器”,以确保其广告收入
数据科学面试中你应该知道的十个SQL概念
SQL非常强大,且具有多种功能。然而,当涉及到数据科学面试时,大多数公司只测试其少数核心概念。以下这10个概念因其在实际中应用最多,而最常出现。
人工智能小咖
2020/08/02
1.2K0
数据科学面试中你应该知道的十个SQL概念
mysql练习(含答案)
表结构 DROP DATABASE IF EXISTS test1; CREATE DATABASE test1; USE test1; ##部门表 #DROP IF EXISTS TABLE DEPT; CREATE TABLE DEPT( DEPTNO int PRIMARY KEY,##部门编号 DNAME VARCHAR(14) , ##部门名称 LOC VARCHAR(13) ##部门地址 ) ; INSERT INTO DEPT VALUES (10,'ACCOU
Java学习
2018/04/17
2.6K0
mysql练习(含答案)
Java补充之MySQL入门必备知识
mysql5.5 mysql5.6 mysqI5.7(稳定) mysql8 更高版本
timerring
2023/05/24
1.5K0
Java补充之MySQL入门必备知识
javaweb-oracle-1-57
找到oracle默认的配置文件,复制到其他地方配置成环境变量自动装填数据 C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
全栈程序员站长
2021/05/19
6230
Oracle 数据库查询专题 (select * from emmmm 80 T)
传送门: Oracle数据库学习笔记 (四 —— select 从入门到放弃 【上】) Oracle数据库学习笔记 (四 —— select 从入门到放弃 【下】)
Gorit
2021/12/09
4660
数据库表中常用的查询实验
select ename,sal from emp where deptno=10;
Twcat_tree
2022/11/30
1K0
【leetcode两题选手】MySQL类题目(三)
Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。
看、未来
2020/08/26
3560
在线Coding题目 例如:部门表(id,名称...),员工表(id,部门id,姓名,薪资,入职时间...), 查出部门中薪资最高的员工;部门薪资总和;
coderlwz
2023/10/22
2350
云计算行业高收入的多个技能
随着企业将基础设施迁移到公有云中,对掌握了云计算技能的专业人员的需求逐渐加大,企业无法找到足够的专业人员来管理和支持其环境,云计算技能逐渐成为所有IT技能中最受欢迎的技能。
CloudBest
2019/08/01
1.1K0
员工培训:如何制定以数据为依据的业务决策
普华永道的研究表明,高度数据驱动的组织在决策方面取得显着改善的可能性要高三倍。不幸的是,高达62%的高管仍然更多地依赖经验和直觉,而不是数据来制定业务决策。
AI科技大本营
2020/11/23
7660
员工培训:如何制定以数据为依据的业务决策
Leetcode-sql-one
本文中主要是介绍LeetCode中关于SQL的练习题,从易到难,循序渐进。文中会介绍题目和尽可能多的解答方案
皮大大
2021/03/01
4160
Leetcode-sql-one
如何管理多个 SSH 连接
每台基于   / Unix 的机器都有一个  .ssh 文件夹,您可以在其中保存 ssh 密钥。在这个文件夹中,你可以创建一个名为  config 的文件,可以将所有远程机器的详细信息放在这个配置文件中。
用户1685462
2021/09/04
1.2K0

相似问题

SQL:给出收入高于经理的员工的名字

32

自连接以获取员工经理姓名

150

显示薪资、薪资(薪资)、收入高于公司薪资的员工姓名(薪资)

17

选择员工最多的经理姓名

210

如何从员工姓名中获取经理姓名

331
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文