逻辑与(&&、&)和逻辑或(||、|)
这四个逻辑运算符,大家都知道,但是有时候会凌乱,这里用程序来解释一下,以免忘了。(根据大家反应说:这文章没有解释清楚它们的区别、用法,其实文章主要说的是,如果将这四个运算符用于条件判断,那么它们会是什么结果,写文章的初衷不是讲它们的本质)
1.逻辑与
&&和&翻译成中文就是“且”的意思,都是当两个条件同时成立时执行,既然是这样,为什么要两个呢,一起来看下它们的区别,直接上代码:
public void fun()
{
int c = ; int d = ;
if ((c = ) < d && (d = ) <= c)//在条件语句中给变量赋值,方便观察条件是否有执行,不要被这个给弄乱了,其实就是先赋值后判断
{
Console.WriteLine("&& c={0},d={1}", c, d);
}
Console.WriteLine("&& c={0},d={1}", c, d);
Console.WriteLine("---------------------------------"); int e = ; int f = ;
if ((e = ) < f & (f = ) <= e)
{
Console.WriteLine("& e={0},f={1}", e, f);
}
Console.WriteLine("& e={0},f={1}", e, f);
}
会是什么个结果呢?大家看图:
结论是:“&&”当从左到右有条件为false时,就直接跳出if语句,不再往下判断,所以程序中的d不会被赋值;而“&”是无论从左到右的条件是不是为true,都会执行所有的判断条件,所以程序中的f会被赋值为10。
2.逻辑或
||和|翻译成中文就是“或”的意思,都是当两个条件中至少有一个成立时执行,一起来看下它们的区别,直接上代码:
private void fun()
{
int x = ; int y = ;
if ((x = ) > y || (y = ) < x)
{
Console.WriteLine("|| x={0},y={1}", x, y);
} Console.WriteLine("---------------------------------"); int a = ; int b = ;
if ((a = ) > b | (b = ) < a)
{
Console.WriteLine("| a={0},b={1}", a, b);
}
}
直接看结果图:
结论是:“||”当有一个条件成立时,就不再往下执行判断条件而直接执行if的内容,所以程序中的y不会被赋值为10;“|”从左到右无论是否有条件成立,都会将所有的判断语句执行。
附上本实例完整代码,以便大家体验,建立个控制台应用程序复制黏贴,直接用:
static void Main(string[] args)
{
int x = ; int y = ;
if ((x = ) > y || (y = ) < x)
{
Console.WriteLine("|| x={0},y={1}", x, y);
} Console.WriteLine("---------------------------------"); int a = ; int b = ;
if ((a = ) > b | (b = ) < a)
{
Console.WriteLine("| a={0},b={1}", a, b);
} Console.WriteLine("---------------------------------"); int c = ; int d = ;
if ((c = ) < d && (d = ) <= c)
{
Console.WriteLine("&& c={0},d={1}", c, d);
}
Console.WriteLine("&& c={0},d={1}", c, d);
Console.WriteLine("---------------------------------"); int e = ; int f = ;
if ((e = ) < f & (f = ) <= e)
{
Console.WriteLine("& e={0},f={1}", e, f);
}
Console.WriteLine("& e={0},f={1}", e, f);
Console.ReadKey();
}
总结:一句话概括——当是两个运算符(&&,||)时,当第一个条件成立(||)或违反(&&),就不再继续判断之后的条件,所以效率高一点;当是一个运算符(&,|)时,无论第一个条件是否成立(|)或违法(&),都会继续执行剩下的判断语句,所以效率低一点。
逻辑与(&&、&)和逻辑或(||、|)的更多相关文章
- CPU相关知识---物理CPU数、物理核数、逻辑核数、逻辑CPU数 ?
一.物理CPU数.物理核数.逻辑核数.逻辑CPU数 相互关系??? 物理CPU数 ---> 每个物理CPU对应物理核数 ---> (每个物理核数对应逻辑核数)物理CPU对应逻辑核数 --- ...
- 【JavaScript】JavaScript赋值语句中的逻辑与&&和逻辑或||
在其他语言中,我们往往看到逻辑符号出现在判断语句当中,如 if(a||b){} 但在一些js相关的面试题或者书中,我们有时会看到逻辑与&&和逻辑或||符号出现在赋值语句或者返回语句中, ...
- JavaScript 逻辑与(&&) 与 逻辑或(||) 运算规则
逻辑与(&&) 逻辑与(&&)操作可以应用于任何的操作类型,不仅仅是布尔值, 在有一个操作数不是布尔值的情况下,&&操作符就不一定返回布尔值:遵循下面规 ...
- 仔细看看Javascript中的逻辑与(&&)和逻辑或(||)
学过Java和C的人,都知道逻辑与(&&)和逻辑或(||),他们都是短路运算符,也就是说,对于&&来说,只要左边的操作数是false,它就不会再去判断右边的操作数是tr ...
- 学习笔记:Makefile的ifeq逻辑或,逻辑与的变通实现
(1)ifeq的用法 ifeq ($(变量名), 变量值 ) ........ else ifeq ($(..), ..) ......... else ......... endif (2) ...
- js 基础-&& || 逻辑与和逻辑或
今天百度发现一个简化长if else if 语句的方法,看起来及其强大,感觉这样虽然对系统性能提升没有帮助但是代码更简练了,分析了一番,下面先说说自己学到的理论. 首先要弄清楚js 中对于 变量, ...
- WEB安全第七篇--终结篇考验逻辑思维:逻辑漏洞大汇总(越权、会话逻辑、业务逻辑、暴力破解)
零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...
- javascript高程笔记:逻辑与和逻辑或
逻辑与和或 逻辑与 当 && 前后两个操作数都是布尔值,无可厚非,同时为true才为true.与其他强类型语言不同的是,javascript逻辑与前后的操作数可以应用于任何类型. 而且 ...
- JS && || 陷阱 javascript 逻辑与、逻辑或 【转】
通常来说逻辑运算a&&b和a||b分别是逻辑与运算和逻辑或运算,返回的是一个布尔值,要么为true,要么为false. 比如在PHP里面a&&b返回类型永远是布尔值,非 ...
- js中的逻辑与和逻辑或随笔
逻辑与:&&,都真才真 逻辑或:||,一真都真 逻辑运算两侧不都是布尔值时,会隐式转换为布尔值转换规则:转换为true:非0数字(包含infinity).非空字符串转换为false:0 ...
随机推荐
- Socket网络编程--FTP客户端(60篇socket博客,而且都比较简单、深入浅出)
已经好久没有写过博客进行分享了.具体原因,在以后说. 这几天在了解FTP协议,准备任务是写一个FTP客户端程序.直接上干货了. 0.了解FTP作用 就是一个提供一个文件的共享协议. 1.了解FTP协议 ...
- Maven创建项目: Failed to execute goal org.apache.maven.plugin( mvn archetype:create)
一.概述: 在使用mvn 命令mvn archetype:create -DgroupId=com.chuanliu.c11 -DartifactId=c11searcher在控制创建maven项目和 ...
- YARN & HDFS2 安装和配置Kerberos
今天尝试在Hadoop 2.x开发集群上配置Kerberos,遇到一些问题,记录一下 设置hadoop security core-site.xml <property> <name ...
- 基于visual Studio2013解决算法导论之012计数排序
题目 计数排序 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #in ...
- android网络编程注意事项之一:移动网络下,防止网络超时甚至连接不上,解决办法--为网络请求设置代理
Android应用程序访问互联网资源时,在Wifi的情况下处理网络连接按照上文所讲述的方法步骤即可顺利实现:但如果当前Android设备的联网方式是通过移动运营商的网络服务为中转,间接访问的互联网资源 ...
- Triangle---minimum path sum
动态规划 class Solution: # @param triangle, a list of lists of integers # @return an integer def minimum ...
- saltstack:使用教程之一安装及客户端返回写入MySQL
saltstack使用教程: 1.安装: 需要epel的yum源,没有的话把下面的复制并新建个文件 /etc/yum.repos.d/epel.repo 粘贴即可: [epel] name=Extra ...
- 转载python并行运算实例
Python的并发处理能力臭名昭著.先撇开线程以及GIL方面的问题不说,我觉得多线程问题的根源不在技术上而在于理念.大部分关于Pyhon线程和多进程的资料虽然都很不错,但却过于细节.这些资料讲的都是虎 ...
- jQuery格式化时间插件formatDate
一.不传时间 $.formatDate("yyyy-MM-dd HH:mm:ss"); 二.传时间 $.formatDate("yyyy-MM-dd HH:mm:ss ...
- centos7安装codeblocks教程
author:lidabo 装了好多次系统,每次装的时候都有要在网上各种查,太麻烦了.所以决定记录一下,以后用到的时候会方便一些.当然,本文来源于网络,取百家之长,最重要的是本人已验证过,说明对本系统 ...