[英]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;
}
希望這可以使事情變得順利。
用於按位操作。 參考:
http://www.dotnetperls.com/and
枚舉上最常見的C#按位運算
不,並非總是毫無意義的。 也許您的第二個檢查是即使第一個條件為假也必須執行的操作。
從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
但是檢查第二個條件是否為假是毫無意義的,因為第一個條件如果為假,將始終使整個事物為假
對於短路操作員來說確實如此: &&
&
:是按位運算符。 有兩個區別:
將同時計算兩個操作數。
操作數不一定總是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.