簡體   English   中英

C#中單個AND運算符的意義是什么?

[英]What is the point of the single AND operator in C#?

為什么&存在? 我的書告訴我&即使第一個條件為假,&也會檢查兩個條件是否都為假,但是無論如何,檢查第二個條件是否為假是毫無意義的,因為如果第一個條件為假,則第一個條件總是會使整個事物為假。

&&是“布爾AND”運算符。 如果兩個操作數都為true,則結果為true,否則為false。 如果第一個條件為真,則僅評估第二個條件,因為這是有用的優化。

&是“二進制AND”運算符。 它評估對其操作數應用按位與運算的結果。 此值的類型與操作數的類型相同,可以是任何整數類型或布爾值。 它總是對兩個操作數求值。

對於布爾操作數, &&&之間唯一真正的實際區別是,第一個始終評估兩個操作數,而另一個則進行短路評估

當然,對於整數操作數,只能使用&運算符。 整數按位與的示例:

17 & 13 == 1

這是因為17是10001,按位,13是1101。因此操作是:

   10001
 & 01001
--------
   00001

二進制和布爾OR運算符( ||| )也是如此。

二進制&運算符也可以用作一元運算符,在該運算符中它返回要應用的變量的地址,如C中所示。只能在unsafe代碼中使用。 例:

unsafe {
   int a = 3;
   int* addressOfA = &a;
}

希望這可以使事情變得順利。

不,並非總是毫無意義的。 也許您的第二個檢查是即使第一個條件為假也必須執行的操作。

從MSDN進行檢查: http : //msdn.microsoft.com/de-de/library/sbf85k1c (v= vs.80).aspx

if(NecessaryFunction() & SecondNecessaryFunction())
{
   // Do something
}

bool NecessaryFunction()
{
   // Do smth useful;
}
bool SecondNecessaryFunction()
{
   // Do smth required and return bool;
}

在這種情況下要執行這兩種方法,如果其中有一個是假的不要坤內if

但是檢查第二個條件是否為假是毫無意義的,因為第一個條件如果為假,將始終使整個事物為假

對於短路操作員來說確實如此: &&

& :是按位運算符。 有兩個區別:

  1. 將同時計算兩個操作數。

  2. 操作數不一定總是bool

&運算符的行為方式如下

當用作一元運算符時,返回地址。但是需要不安全。

當在整數上用作二進制運算符時,它將執行邏輯按位與。

在Bools上用作二元運算符時,其行為與常規&&相似,但有一個區別。 即使第一個條件為假,它也會評估第二個條件。

num=0;
if(false && num++)       
num will be zero

num=0;    
if(false & num++)    
num will be one

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM