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

本文关键字:操作符 什么时候 | 更新日期: 2023-09-27 18:05:19

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

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

但是当我在MSDN上阅读一页时,他们提到我们可以使用&|。我测试了一下,它可以编译,没有任何编译错误。

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

那么什么时候我们应该使用像&|这样的逻辑运算符来代替&&||呢?

单操作符为位操作符,双操作符为逻辑操作符:

  • 如果你使用bool,坚持使用&&||
  • 如果你想做位算术,使用&|

有关位运算符的详细信息,请参见Wikipedia,例如:

5 & 3 => 1

这样做的原因是1是2被5和3共享的唯一幂:

  101 (5)
& 011 (3)
  -------
  001 (1)

双布尔操作符是短路操作符;这意味着如果第一个操作数失败,它将不会检查其他操作数;这被认为更有效率

编辑:

一些持反对意见的人促使我添加这一部分,

虽然和操作符是位操作符,但它可以用作逻辑操作符,在这种情况下,两个操作数都将被求值,而不会短路

参考MSDN: http://msdn.microsoft.com/en-us/library/sbf85k1c.aspx

"二进制,操作符是为整型和bool类型预定义的。对于整型,&计算其操作数的逻辑位与。对于bool操作数,&计算其操作数的逻辑与;也就是说,当且仅当两个操作数都为真时,结果为真。"

这个问题含蓄地问了两个操作符之间的区别这两个操作符都可以完成这个任务但是他想知道选择哪一个

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

因此,我反对滥用持反对意见的人