【答疑解惑】 || 和 & 在编程中小知识

语音版:

在学习编程语言时基本上都会遇到与(&&),或(||)逻辑运算符。

运算规则是:

a&&b,a和b全为true时结果才是ture; a||b,a或者b有一为true结果就是true;

这里a和b可能是两个boolean变量,也可能是两个结果为boolean的表达式。

这里说一下短路问题,这个在实际编程中也会遇到,短路是在进行逻辑运算时,如果通过前面的判断已经能够明确的知道整个表达式的值,就不会再进行后面表达式的逻辑判断。

例如:表达式A || 表达式B || 表达式C

在计算出表达式A是true时就已经能够知道整个表达式的值为true,所以表达式B和C都不会再进行计算

例如:表达式A && 表达式B

在计算出表达式A为false的时候就已经知道整个表达式为false,所以不会再进行表达式B的计算。

知道上面的短路问题,大家以后写程序的时候需要注意两点:

1、逻辑表达式中尽量不要进行变量的赋值和运算操作,因为短路的时候后面的表达式不会再执行;

2、把能够很快确定true或者false的表达式写在首位,这样短路后后面的表达式不会在进行计算,节省了执行时间。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

Linux 中断处理浅析

最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着”重要的事马上做, 不重要的事推后做”的异步处理思想. 于是整理一下~ ? 第...

4178
来自专栏Golang语言社区

Goroutine(协程)为何能处理大并发?

简单来说:协程十分轻量,可以在一个进程中执行有数以十万计的协程,依旧保持高性能。 进程、线程、协程的关系和区别: 进程拥有自己独立的堆和栈,既不共享堆,亦不共享...

2685
来自专栏小小挖掘机

来学习几个简单的Hive函数啦

咳咳,今天来介绍一下几个Hive函数吧,先放一张我登哥划水的照片,希望大家也做一只自由的鱼儿,在知识的海洋里游呀游,嘻嘻! ? 今天我们来介绍几个Hive常用的...

3524
来自专栏Java架构师历程

mysql 谈谈innodb存储引擎

5.7版本引入了模式自动转换的功能,但该语法依然保留了。 另外一个有趣的点是,在5.7版本中,你可以通过设置session_track_transactio...

1002
来自专栏小樱的经验随笔

图的存储结构的实现(C/C++实现)

存档: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define maxv 10 4 #define m...

2526
来自专栏LanceToBigData

MySQL(十三)之MySQL事务

前言   这段时间自己会把之前学的东西都总结一遍,希望对自己以后的工作中有帮助。其实现在每天的状态都是很累的,但是我要坚持!   进入我们今天的正题:   为什...

1766
来自专栏Python攻城狮

MySQL中char、varchar和text的区别

它们的存储方式和数据的检索方式都不一样。 数据的检索效率是:char > varchar > text 空间占用方面,就要具体情况具体分析了。

664
来自专栏java初学

linux进程调度

42014
来自专栏数据结构与算法

洛谷P2633 Count on a tree

题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastan...

2666
来自专栏决胜机器学习

RabbitMQ(二) ——工作队列

RabbitMQ(二)——工作队列 (原创内容,转载请注明来源,谢谢) 一、概述 工作队列模式(work queue),是有多个消费者的情况下,可以共同消费队...

2844

扫码关注云+社区