C#中&與&&的區別


以前都沒怎么注意兩者的區別(我甚至都不知道“&”),因為它們都是“與”運算符。

二元運算符 (&) 為整型和 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. 
(|) 與 (||) 運算符也是一樣的道理

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM