zoukankan      html  css  js  c++  java
  • C#中&与&&的区别

    以前都没怎么注意两者的区别(我甚至都不知道“&”),因为它们都是“与”运算符。我昨天看C#高编第三版的时候,才注意到这点,查了下MSDN,把区别贴出来,时时提醒自己。

    二元运算符 (&) 为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,其结果才为 true。条件“与”运算符 (&&) 执行布尔操作数的逻辑“与”运算,但如有必要,只计算第二个操作数。它与二元运算符 (&)很像,不同的是,如果 x 为 false,则不计算 y(因为不论 y 为何值,与操作的结果都为 false)。这被称作为“短路”计算。

    下面的例子最能说明问题

    // cs_operator_logical_and.cs 
    using System; 
    class Test  

       static bool fn1()  
       
          Console.WriteLine("fn1 called"); 
          return false
       }
     
     
       static bool fn2()  
       
          Console.WriteLine("fn2 called"); 
          return true
       }
     
     
       public static void Main()  
       
          Console.WriteLine("regular AND:"); 
          Console.WriteLine("result is {0}", fn1() & fn2()); 
          Console.WriteLine("short-circuit AND:"); 
          Console.WriteLine("result is {0}", fn1() && fn2()); 
       }
     
    }

    输出:

    regular AND: 
    fn1 called 
    fn2 called 
    result is False 
    short-circuit AND: 
    fn1 called 
    result is False

    BTW 
    (&) 也可作为一元运算符,返回操作数的地址

    PS. 
    (|) 与 (||) 运算符也是一样的道理

  • 相关阅读:
    那些离不开的 Chrome 扩展插件
    Spring Boot 实战 —— 入门
    Maven 学习笔记
    Linux lvm 分区知识笔记
    Linux 双向 SSH 免密登录
    CentOS Yum 源搭建
    Ubuntu 系统学习
    iOS 测试三方 KIF 的那些事
    Swift 网络请求数据与解析
    iOS Plist 文件的 增 删 改
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2373064.html
Copyright © 2011-2022 走看看