比方说,你有C#为什么a = SomeFunction()会执行如果a == false?
class Program
{
static void Main()
{
bool a = GetFalse();
if (a)
{
a = GetTrue();
}
bool b = GetFalse();
b &= GetTrue();
}
static bool GetFalse() => (false);
static bool GetTrue() => (true);
}
为什么会GetTrue()
时b
已经是假的被执行?
不应该&=
运营商认识到它永远不会评价为真?
否 - '&='运营商等同于'X = X&y'并不会短路。 –
更简单的解释是&是一个按位运算符,并且要执行按位操作,您需要两个操作数的二进制值,因此即使第一个操作数为假,也需要执行第二个部分。 – zoubida13
@ zoubida13'&'在整型上只是一个按位运算符 - 它们都是布尔类型的布尔运算符。 –