CSDN说明:

条件“或”运算符 (||) 执行 bool 操作数的逻辑“或”运算,但仅在必要时才计算第二个操作数。

件“与”运算符 (&&) 执行其 bool 操作数的逻辑“与”运算,但仅在必要时才计算第二个操作数

同时我们还要了解到  || 和 && 都是左结合性的逻辑运算符,所以看下面的例子

class Program
    {
        static void Main(string[] args)
        {
            int a = 9;
            int b = 10;
            int c = 11;
            int d = 12;
            if (d>b || c > b && a>b)
            {
                Console.WriteLine("true");
            }
            Console.ReadKey();
        }
    }

所以在判断到d>b为true时,后面的部分c > b && a>b就不会再运算,进入条件语句里面


更正:

上面的结果原因是由于 && 的优先级高于 || ,所以上面的条件相当于 d>b || (c>b && a>b) 。在看一个例子

 if ( a > b && c > b || d > b)
{
Console.WriteLine("true");
}

上面这个结果也是ture,以为上面的条件相当于 (a>b && c>b) || d>b。

上面我们已经知道了&& 的优先级高于 || ,那么下面我们通过两位一种方式看看 && 和 || 的短路特性(就是开篇CSDN说明:中说的特性)及其的结合性。

看下面的代码

 class Program
{
static int trueTimes = ;
static int falseTimes = ;
static bool GetTrue()
{
Console.WriteLine("Execute GetTrue():" + trueTimes++);
return true;
} static bool GetFalse()
{
Console.WriteLine("Execute GetFalse():" + falseTimes++);
return false;
} static void Main(string[] args)
{
Console.WriteLine(GetTrue() && GetTrue() || GetFalse());
Console.ReadKey(); } }

输出结果为

Execute GetTrue():1
Execute GetTrue():2
True

分析:由于&& 优先级比较高,所以条件相当于(GetTrue() && GetTrue() )|| GetFalse() ,所以执行第一个GetTrue()时,还会执行第二个GetTrue()才能确定真个表达式为真,其实对于 || 后面的方面,就会被短路,不被执行,因为前面的结果已经可以证明整个表达式为True。

我们再换个逻辑表达式

 static void Main(string[] args)
{
Console.WriteLine(GetFalse() && GetTrue() || GetFalse());
Console.ReadKey(); }

输出结果为

Execute GetFalse():1
Execute GetFalse():2
False

分析:由于&& 优先级比较高,所以条件相当于(GetTrue() && GetTrue() )|| GetFalse() ,所以执行第一个GetFalse()时,(GetTrue() && GetTrue() )就一定为假,所以后面的GetTrue()不会执行,被短路,这个里面我们也可以看出&& 和 || 是从左到右的结合方式,这个时候我们必须继续执行||后面的逻辑,才能确认整个表达式是真是假,所以GetFalse会被执行。

上面是我这边的更正,如果有错误或疏忽之处,望不惜赐教!

C# 条件与&&与条件或||的使用总结的更多相关文章

  1. shell脚本进阶之条件测试与条件语句

       接着上篇博客,今天整理一下关于条件测试和条件语句方面的知识. shell脚本进阶之条件测试    在编写shell脚本时,经常需要对一些条件进行判断,可以使用测试命令test辅助完成测试过程.t ...

  2. 在Bootstrap开发框架中使用bootstrapTable表格插件和jstree树形列表插件时候,对树列表条件和查询条件的处理

    在我Boostrap框架中,很多地方需要使用bootstrapTable表格插件和jstree树形列表插件来共同构建一个比较常见的查询界面,bootstrapTable表格插件主要用来实现数据的分页和 ...

  3. PHPlaravel中从数据库中选择数据是增加时间条件及各种条件

    注:附加条件后要加get函数. 1.public function getForDataTable($startTime,$endTime){ return $this->query() -&g ...

  4. yii2:多条件多where条件下碰到between时,between语句如何处理呢?

    yii2:多条件多where条件下碰到between时,between语句如何处理呢? 我有一张表:id,name,telphone,ticket_no,status,create_time等字段, ...

  5. Excel_PoweQuery——条件计数、条件求和

    岁月不居,时节如流. 时光荏苒,岁月如梭. 前面两段充分体现了博主深厚的文学素养,别和博主争,博主说啥就是啥. 其实,对于大量数据的处理,这几年微软Office做的不单单是2007的时候把Excel的 ...

  6. 支持向量机(SVM)必备概念(凸集和凸函数,凸优化问题,软间隔,核函数,拉格朗日乘子法,对偶问题,slater条件、KKT条件)

    SVM目前被认为是最好的现成的分类器,SVM整个原理的推导过程也很是复杂啊,其中涉及到很多概念,如:凸集和凸函数,凸优化问题,软间隔,核函数,拉格朗日乘子法,对偶问题,slater条件.KKT条件还有 ...

  7. 谈谈raft fig8 —— 迷惑的提交条件和选举条件

    谈谈raft fig8 -- 迷惑的提交条件和选举条件 前言 这篇文章的思路其实在两个月前就已经成型了,但由于实习太累了,一直没来得及写出来.大概一个月前在群里和群友争论fig8的一些问题时,发现很多 ...

  8. mybatis——逆向工程中 where (条件1)and (条件2 or 条件3 or 条件4)

    where (条件1)and (条件2 or 条件3 or 条件4) = where (条件1 and 条件2)or (条件1 and 条件3) or (条件1 and 条件4) 结果 是这样的 WH ...

  9. 转:SQL:外连接on条件与where条件的区别

    原文地址:http://hi.baidu.com/benben1006/blog/item/187deb77bc0e5319b151b974.html 数据库在通过连接两张或多张表来返回记录时,都会生 ...

  10. SQL中on条件与where条件的区别(转载)

    数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时,on和where条件的区别如下: 1. on条件是在生成临时表时使用的条 ...

随机推荐

  1. Windows Azure 配置Active Directory 主机(2)

    前一篇概况给大家介绍了,在云端部署一台DC 需要满足一些条件,接下来进入正题,云端VM安装域控制器具体步骤. 步骤1 :验证 主DC 的静态 IP 地址 1.登录到 Corp 网络上的 主DC. 2. ...

  2. BUG严重级别定义及注意事项

  3. 洛谷 P2176 [USACO14FEB]路障Roadblock

    题目描述 每天早晨,FJ从家中穿过农场走到牛棚.农场由 N 块农田组成,农田通过 M 条双向道路连接,每条路有一定长度.FJ 的房子在 1 号田,牛棚在 N 号田.没有两块田被多条道路连接,以适当的路 ...

  4. WebClient UI和Tomcat的启动器

    WebClient UI 我们在WebClient UI的开发工具里点了Test按钮, 会在浏览器以测试模式打开选中的view.这背后发生了什么事?注意浏览器地址栏的bspwd_cmp_test,这是 ...

  5. Erlang程序设计(第2版)读书笔记(一)

    正如<代码的未来>中所说,为了充分利用多核,并发变成将成为未来发展的趋势,对于并发编程的支持,Erlang确实是不二之选,Erlang在国内仍然较为小众,经典书籍相对也要少很多,最终选择了 ...

  6. 如何在程序中加入Growl通知

    Growl for Windows – Mac 样式的信息提示工具.目前已经支持的软件包括:Outlook,Visual Studio 等以及一个利用命令行从本地或者远程发送消息过来的工具 .Grow ...

  7. 正确配置Nginx+PHP

    对很多人而言,配置Nginx+PHP无外乎就是搜索一篇教程,然后拷贝粘贴.听上去似乎也没什么问题,可惜实际上网络上很多资料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷贝粘贴,早晚有一天会为此付出 ...

  8. ecplise——python not configured报错

    解决方法:点击window——preferences——PyDey——pythonInterprter 最后成功

  9. Context 使用不当造成内存泄露

    问题: Activity中的context被传递给了一个生命周期长过activity的对象(通常为静态单实例变量),导致activity不能正常被销毁. 示例:Activity 调用 ChatMgr ...

  10. python基础一 day15 面试题

    # def demo():# for i in range(4):# yield i## g=demo()## g1=(i for i in g)# g2=(i for i in g1)## prin ...