C#和运营商澄清

Sun*_*een 14 .net c# logic

我在这里看到了一些关于C#中&&和&运算符之间差异的问题,但我仍然对它的使用方式感到困惑,以及在不同情况下会产生什么结果.例如,我只是在项目中瞥见了以下代码

bMyBoolean = Convert.ToBoolean(nMyInt & 1);
bMyBoolean = Convert.ToBoolean(nMyInt & 2);
Run Code Online (Sandbox Code Playgroud)

当它结果为0并且> 0时?这个运营商背后的逻辑是什么?运营商'|'之间有什么区别?

bMyBoolean = Convert.ToBoolean(nMyInt | 1);
bMyBoolean = Convert.ToBoolean(nMyInt | 2);
Run Code Online (Sandbox Code Playgroud)

我们可以使用&&,|| 运算符并获得相同的结果(可能使用不同的代码)?

Sle*_*idi 11

&&是一个条件和用于if语句和while

if(x>1 && y<3)
Run Code Online (Sandbox Code Playgroud)

这意味着x应大于1且y小于3,满足两个条件

if(x>1 || y<3)
Run Code Online (Sandbox Code Playgroud)

满足其中一个

但是,&和| 分别是按位AND和OR.例如:

 1 | 0  => 1
 1 & 0  => 0
 1 & 1  => 1
Run Code Online (Sandbox Code Playgroud)

如果这适用于直整数,则将计算并应用它们的相应二进制值

2&1
=>   10  // the binary value of 2
     &
     01  // the binary value of 1
     --
     00  // the result is zero
Run Code Online (Sandbox Code Playgroud)

  • 我认为这并不能很好地解释这种差异.当你对布尔语使用`&`时会发生什么?在整数上使用`&&`会发生什么? (2认同)

Tom*_*sup 7

&符号在二进制表示中对整数执行按位AND运算.管道按位OR.

在这里看一下这些按位操作意味着什么:http://en.wikipedia.org/wiki/Bitwise_operation