这四个逻辑运算符,大家都知道,但是有时候会凌乱,这里用程序来解释一下,以免忘了。(根据大家反应说:这文章没有解释清楚它们的区别、用法,其实文章主要说的是,如果将这四个运算符用于条件判断,那么它们会是什么结果,写文章的初衷不是讲它们的本质)

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();
}

总结:一句话概括——当是两个运算符(&&,||)时,当第一个条件成立(||)或违反(&&),就不再继续判断之后的条件,所以效率高一点;当是一个运算符(&,|)时,无论第一个条件是否成立(|)或违法(&),都会继续执行剩下的判断语句,所以效率低一点。

逻辑与(&&、&)和逻辑或(||、|)的更多相关文章

  1. CPU相关知识---物理CPU数、物理核数、逻辑核数、逻辑CPU数 ?

    一.物理CPU数.物理核数.逻辑核数.逻辑CPU数 相互关系??? 物理CPU数 ---> 每个物理CPU对应物理核数 ---> (每个物理核数对应逻辑核数)物理CPU对应逻辑核数 --- ...

  2. 【JavaScript】JavaScript赋值语句中的逻辑与&&和逻辑或||

    在其他语言中,我们往往看到逻辑符号出现在判断语句当中,如 if(a||b){} 但在一些js相关的面试题或者书中,我们有时会看到逻辑与&&和逻辑或||符号出现在赋值语句或者返回语句中, ...

  3. JavaScript 逻辑与(&&) 与 逻辑或(||) 运算规则

    逻辑与(&&) 逻辑与(&&)操作可以应用于任何的操作类型,不仅仅是布尔值, 在有一个操作数不是布尔值的情况下,&&操作符就不一定返回布尔值:遵循下面规 ...

  4. 仔细看看Javascript中的逻辑与(&&)和逻辑或(||)

    学过Java和C的人,都知道逻辑与(&&)和逻辑或(||),他们都是短路运算符,也就是说,对于&&来说,只要左边的操作数是false,它就不会再去判断右边的操作数是tr ...

  5. 学习笔记:Makefile的ifeq逻辑或,逻辑与的变通实现

        (1)ifeq的用法 ifeq ($(变量名), 变量值 ) ........ else ifeq ($(..), ..) ......... else ......... endif (2) ...

  6. js 基础-&& || 逻辑与和逻辑或

    今天百度发现一个简化长if   else if 语句的方法,看起来及其强大,感觉这样虽然对系统性能提升没有帮助但是代码更简练了,分析了一番,下面先说说自己学到的理论. 首先要弄清楚js 中对于 变量, ...

  7. WEB安全第七篇--终结篇考验逻辑思维:逻辑漏洞大汇总(越权、会话逻辑、业务逻辑、暴力破解)

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  8. javascript高程笔记:逻辑与和逻辑或

    逻辑与和或 逻辑与 当 && 前后两个操作数都是布尔值,无可厚非,同时为true才为true.与其他强类型语言不同的是,javascript逻辑与前后的操作数可以应用于任何类型. 而且 ...

  9. JS && || 陷阱 javascript 逻辑与、逻辑或 【转】

    通常来说逻辑运算a&&b和a||b分别是逻辑与运算和逻辑或运算,返回的是一个布尔值,要么为true,要么为false. 比如在PHP里面a&&b返回类型永远是布尔值,非 ...

  10. js中的逻辑与和逻辑或随笔

    逻辑与:&&,都真才真 逻辑或:||,一真都真 逻辑运算两侧不都是布尔值时,会隐式转换为布尔值转换规则:转换为true:非0数字(包含infinity).非空字符串转换为false:0 ...

随机推荐

  1. Python框架 Flask 项目实战教程

    本文目的是为了完成一个项目用到的flask基本知识,例子会逐渐加深.最好对着源码,一步一步走.下载源码,运行pip install -r requirements.txt 建立环境python db_ ...

  2. python读写xml

    来自http://blog.csdn.net/liuyuehui110/article/details/7287897 备份防止链接失效 一.XML的读取. 在 NewEdit 中有代码片段的功能,代 ...

  3. Android GridView增加HeaderView和FooterView的实现

    Android GridView增加HeaderView和FooterView的实现 做的项目中遇到一个问题,需要实现一个页面 页面的上面是一个自定义的View和GridView,当向下滚动屏幕的时候 ...

  4. 为什么要用BASE64

    BASE64和其他相似的编码算法通常用于转换二进制数据为文本数据,其目的是为了简化存储或传输.更具体地说,BASE64算法主要用于转换二进 制数据为ASCII字符串格式.Java语言提供了一个非常好的 ...

  5. Windows Phone 8初学者开发—第19部分:设置RecordAudio.xaml页面

    原文 Windows Phone 8初学者开发—第19部分:设置RecordAudio.xaml页面 原文地址:  http://channel9.msdn.com/Series/Windows-Ph ...

  6. C++ pair 使用方法

    类模板:template <class T1, class T2> struct pair 參数:T1是第一个值的数据类型,T2是第二个值的数据类型. 功能:pair将一对值组合成一个值, ...

  7. C# 客户端服务端的编写

    客户端的代码 class client { public void mehod() { TcpClient tcp = new TcpClient(); tcp.Connect(IPAddress.P ...

  8. Android之Camera控制拍照

    package com.android.xiong.cameratest; import java.io.File; import java.io.FileOutputStream; import j ...

  9. 关于Dropdownlist使用的心得体会

    2013-07-23关于Dropdownlist使用的心得体会: Dropdownlist使用最多的几个属性: 一.Dropdownlist.Items,负责包含所有选项的容器 DropDownLis ...

  10. [置顶] 搭建apache+tomcat+memcached集群环境

    一.搭建apache server服务器 1.apache server图示:(加载图片要一张一张,所以可以到下面网站下载带图片的word) http://download.csdn.net/user ...