以前都沒怎么注意兩者的區別(我甚至都不知道“&”),因為它們都是“與”運算符。
二元運算符 (&) 為整型和 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. (|) 與 (||) 運算符也是一樣的道理