可能重复:
什么是C#中逻辑与和条件与的区别?
按位与符号&和逻辑与符号&&有什么区别?
可能重复:
什么是C#中逻辑与和条件与的区别?
按位与符号&和逻辑与符号&&有什么区别?
&
运算符用于整数的按位运算,例如 1000 & 1001 = 1000
。而 &&
运算符则是用于比较布尔值。然而,&
还可以作为非短路逻辑与(non-shortcircuiting logical and)运算符使用,这意味着如果你有一个表达式 false & true
,第二个参数仍将被计算。而使用 &&
运算符则不会出现这种情况。
按位运算,顾名思义,是在位级别上进行AND操作。
因此,如果您对两个整数执行按位AND运算:
int a = 7; // b00000111
int b = 3; // b00000011
int c = a & b; // b00000011 (bitwise and)
另一方面,在C#中,逻辑AND操作在逻辑(布尔)级别上进行。因此,您需要使用布尔值作为运算符,并且结果是另一个逻辑值:
bool a = true;
bool b = false;
bool c = a && b; // c is false
c = a && true; // c is true
好的,问题很好(尽管有些重复)。
按位与会在位级别上影响它的运算符,即对每个位进行循环并执行逻辑AND操作。
另一方面,
逻辑AND将使用2个布尔运算符检查它们的正确性(作为一个整体),并进行决策(请注意,在C#中,bool类型占用2个字节长)。