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

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. BZOJ 2134: 单选错位( 期望 )

    第i个填到第i+1个的期望得分显然是1/max(a[i],a[i+1]).根据期望的线性性, 我们只需将每个选项的期望值累加即可. ---------------------------------- ...

  2. String "+" 的补充说明---行粒度

    String 中“+” 的操作的补充说明 在使用“+”的时候,会创建一个StringBuilder对象,然后invokevirtual append()操作 “+”操作创建StringBuilder的 ...

  3. django-debug-toolbar

    一:安装django-debug-toolbar. 二:在settings里的MIDDLEWARE_CLASSES加入'debug_toolbar.middleware.DebugToolbarMid ...

  4. 关于PsCreateSystemThread函数

    研究了1天这个...MSDN说的不是很清楚NTSTATUS PsCreateSystemThread(  _Out_      PHANDLE ThreadHandle,  _In_       UL ...

  5. php函数参数

    函数的参数 通过参数列表可以传递信息到函数,即以逗号作为分隔符的表达式列表.参数是从左向右求值的. PHP 支持按值传递参数(默认),通过引用传递参数以及默认参数.也支持可变长度参数列表,更多信息参见 ...

  6. windows下各个浏览器用html5进行h.264大视频播放的性能对比说明

    最近在调查windows下哪种浏览器进行大视频播放时候稳定性比较高. 举h.264的4g的视频为例. 选用的浏览器有ie10,firefox,chrome.(因为opera不支持h.264所以没有考虑 ...

  7. 【Android LibGDX游戏引擎开发教程】第06期:图形图像的绘制(下)图片整合工具的使用

    在上一篇文章中,我们提到了图片必须是2的n次方的问题.但是随着Libgdx的不断完善和发展,使用一些工具就 可以很好的解决了这样一个问题,但是它的功能又不仅仅只限于此,那么下面就来让我们看看Textu ...

  8. CocoaPods on Xcode 6 and Yosemite

    老子今天又给环境跪了..... cocoapods 在升级完新系统以后无法工作 解决cocoapods 在 mac 10.10下报错 错误例如以下. /System/Library/Framework ...

  9. Axis2(8):异步调用WebService

    在前面几篇文章中都是使用同步方式来调用WebService.也就是说,如果被调用的WebService方法长时间不返回,客户端将一直被阻塞,直到该方法返回为止.使用同步方法来调用WebService虽 ...

  10. Inter IPP 跟 Microsoft V100编译器区别

    最近做项目用了两个编译器,由于是一种精度的算法计算,对计算的精度要求非常高,同时都用的float型,发现inter的结果比vs的结果好许多.但是不知道是什么原因,最后测试发现,是两个编译器的问题.   ...