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. 
    (|) 与 (||) 运算符也是一样的道理

  • 相关阅读:
    斐波那契数列 的两种实现方式(Java)
    单链表反转
    单链表合并
    两个有序list合并
    list去重 转载
    RemoveAll 要重写equals方法
    Java for LeetCode 138 Copy List with Random Pointer
    Java for LeetCode 137 Single Number II
    Java for LeetCode 136 Single Number
    Java for LeetCode 135 Candy
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2373064.html
Copyright © 2011-2022 走看看