代码之家  ›  专栏  ›  技术社区  ›  Mark Pearl

c#语法和符号

c#
  •  1
  • Mark Pearl  · 技术社区  · 15 年前

    抱歉,这可能是一个让c#尴尬的noob问题,但我遇到了以下语法,不确定它到底在做什么。。。

    在带数字的c表达式中,&符号的作用是什么?

    例如,1&1返回1?

    3 回复  |  直到 15 年前
        1
  •  9
  •   Community Mohan Dere    9 年前

    在你提到的情况下,是 按位 和接线员-它执行 AND operation 在2个整数的每对对应位上,返回结果,也作为整数。 1 & 1 == 1

    In C# , & 也可以用作:

    1. 非短路 符合逻辑的 true 如果它的布尔操作数都是 真的 . 不像 && ,它将计算其第二个操作数的值,即使第一个操作数的计算结果为false。它的用途是 not recommended .
    2. 一元地址运算符(需要不安全的上下文)。
        2
  •  6
  •   Nick Martyshchenko    15 年前

    按位和运算符&

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

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

    bit pattern of a           0000000001011100
    bit pattern of b           0000000000101110
    bit pattern of a & b       0000000000001100
    

    注: 按位“AND”(&)不应与逻辑“AND”混淆。(&)操作员。例如,

    1&4计算结果为0

    (1!=0)&4!=0)计算结果为true

    C++ source, I adapted it a bit

    C# And Bitwise Operator

    Bitwise operators in c# OR(|), XOR(^), AND(&), NOT(~)

    C# Logical Bitwise Operators

        3
  •  3
  •   BrokenGlass    15 年前

    如前所述,它是按位AND运算符。通常你用它来比较某些位是否设置在一个数字中,也就是说,如果你想检查是否设置了第三位,你可以通过这样做来测试。

    bool isBitSet = (myNumber & 4) > 0;
    

    int lowBits = myNumber & 3;