& 和 && 的区别

& 和 && 都可以用作逻辑与运算符,表示 and。当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true。否则,只要有一方为 false,则结果为 false。

不过,&& 具有短路的功能,如下案例显示,第一个函数返回 false,则不再运行后面的函数。

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("regular AND:");
        Console.WriteLine("result is {0}", fn1() & fn2());
        Console.WriteLine("short-circuit AND:");
        Console.WriteLine("result is {0}", fn1() && fn2());
    }

    static bool fn1()
    {
        Console.WriteLine("fn1 called");
        return false;
    }

    static bool fn2()
    {
        Console.WriteLine("fn2 called");
        return true;
    }
}

 

其次,& 还可以用作位运算符,当 & 操作符两边的表达式不是 boolean 类型时,& 表示按位与操作。我们通常使用 0x0f 来与一个整数进行 & 运算,来获取该整数的最低 4 个 bit 位,例如:0x31 & 0x0f 的结果为 0x01。

posted @ 2021-09-27 10:41  kueizheng  阅读(48)  评论(0编辑  收藏  举报