我们什么时候在C#中使用单操作符和双操作符?

时间:2014-05-26 17:57:25

标签: c# logical-operators

通常当我们使用&&||之类的条件逻辑运算符时,我们可以这样使用它:

if (x > y && y > z)
    //codes

OR

if (x > y || x > z)
    //codes

但是当我在MSDN中阅读某个页面时,他们提到我们可以使用&|。 我测试过,它编译时没有给出任何编译错误。

那么我们什么时候才能使用&|而不是&&||这样的逻辑运算符?

2 个答案:

答案 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;也就是说,当且仅当两个操作数均为真时,结果才为真。"

所以问题是隐含地询问运营商之间的差异,他们都可以做这项工作,但他想知道选择哪一个

我理解的问题是将(&)和(&&)区分为逻辑运算符,而不是单独列出每个的功能

因此,我对滥用下来的人表示反对意见