c#语法和符号

Mar*_*arl 1 c#

对不起,这可能是c#的一个令人尴尬的noob问题,但我遇到了以下语法并且不确定它在做什么......

&符号在ac#表达式中用数字做什么?

例如,1&1返回1?

Ani*_*Ani 9

在你提到的情况下,它是按位 AND运算符 - 它对2个整数的每对相应位执行AND运算并返回结果,也作为整数. 1 & 1 == 1因为将二进制数与自身进行AND运算会生成相同的数字 - 所有零位将被投影为零(false和false为false),而所有的一位将被投影为1(true和true为真).

在C#中,&还可以作为:

  1. 非短路逻辑 AND运算符:true如果它的两个布尔操作数都是,则返回true.&&与之不同,它将评估其第二个操作数的值,即使第一个操作数已被评估为false.不推荐使用它.
  2. 一元地址运算符(需要不安全的上下文).


Nic*_*nko 6

按位AND运算符&

&(按位AND)运算符将其第一个操作数的每个位与第二个操作数的相应位进行比较.如果两个位均为1,则结果的相应位设置为1.否则,它将相应的结果位设置为0.

两个操作数必须具有整数或枚举类型.执行每个操作数的常规算术转换.结果与转换的操作数具有相同的类型.

bit pattern of a           0000000001011100
bit pattern of b           0000000000101110
bit pattern of a & b       0000000000001100
Run Code Online (Sandbox Code Playgroud)

注意:按位AND(&)不应与逻辑AND混淆.(&&)运算符.例如,

1和4评估为0

(1!= 0)&&(4!= 0)评估为真

C++源代码,我对它进行了一些修改

一些文章:

C#和按位运算符

c#OR(|),XOR(^),AND(&),NOT(〜)中的按位运算符

C#逻辑按位运算符