通常当我们使用&&
和||
之类的条件逻辑运算符时,我们可以这样使用它:
if (x > y && y > z)
//codes
OR
if (x > y || x > z)
//codes
但是当我在MSDN中阅读某个页面时,他们提到我们可以使用&
和|
。
我测试过,它编译时没有给出任何编译错误。
那么我们什么时候才能使用&
和|
而不是&&
和||
这样的逻辑运算符?
答案 0 :(得分:2)
单个运算符是按位运算符,而双重运算符是逻辑运算符:
bool
,请坚持&&
和||
。&
和|
。有关按位运算符的详细信息,请参阅Wikipedia,例如:
5 & 3 => 1
原因是1是5和3分享的2的唯一幂:
101 (5)
& 011 (3)
-------
001 (1)
希望这有帮助。
答案 1 :(得分:1)
双布尔运算符是短路运算符;这意味着如果第一次失败,它将不会检查其他操作数;这被认为更有效率
编辑:
一些贬低者刺激我添加这部分,
虽然&运算符是按位运算符,但它可以用作逻辑运算符,在这种情况下,将评估两个操作数而不会短路
参考MSDN:http://msdn.microsoft.com/en-us/library/sbf85k1c.aspx
" Binary&运算符是为整数类型和bool预定义的。对于整体类型,&计算其操作数的逻辑按位AND。对于bool操作数,&计算其操作数的逻辑AND;也就是说,当且仅当两个操作数均为真时,结果才为真。"
所以问题是隐含地询问运营商之间的差异,他们都可以做这项工作,但他想知道选择哪一个
我理解的问题是将(&)和(&&)区分为逻辑运算符,而不是单独列出每个的功能
因此,我对滥用下来的人表示反对意见