本文讨论C#中bool类型在位运算符 &(与运算) 和 |(或运算)的结果
&(与运算)在数值中运算的过程是先把 数字 转换成二进制, 同位均为1 则该位为1
|(或运算)在数值中运算的过程是先把 数字 转换成二进制, 同位中有1 则该位为1
bool bol1 = false, bol2 = false;
bool Result = bol1 & bol2;
if (Result == true)
{
Debug.WriteLine("False & False = True");
}
if (Result == false)
{
Debug.WriteLine("False & False = False");
}
Result = bol1 | bol2;
if(Result==true)
{
Debug.WriteLine("False | False = True");
}
if (Result == false)
{
Debug.WriteLine("False | False = False");
}
bol1 = false; bol2 = true;
Result = bol1 & bol2;
if (Result == true)
{
Debug.WriteLine("False & True = True");
}
if (Result == false)
{
Debug.WriteLine("False & True = False");
}
Result = bol1 | bol2;
if (Result == true)
{
Debug.WriteLine("False | True = True");
}
if (Result == false)
{
Debug.WriteLine("False | True = False");
}
bol1 = true; bol2 = false;
Result = bol1 & bol2;
if (Result == true)
{
Debug.WriteLine("True & False = True");
}
if (Result == false)
{
Debug.WriteLine("True & False = False");
}
Result = bol1 | bol2;
if (Result == true)
{
Debug.WriteLine("True | False = True");
}
if (Result == false)
{
Debug.WriteLine("True | False = False");
}
bol1 = true; bol2 = true;
Result = bol1 & bol2;
if (Result == true)
{
Debug.WriteLine("True & True = True");
}
if (Result == false)
{
Debug.WriteLine("True & True = False");
}
Result = bol1 | bol2;
if (Result == true)
{
Debug.WriteLine("True | True = True");
}
if (Result == false)
{
Debug.WriteLine("True | True = False");
}
VS 中OutPut输出结果
False & False = False
False | False = False
False & True = False
False | True = True
True & False = False
True | False = True
True & True = True
True | True = True
继续探讨,如果不要用变量能够在If中时用吗,代码如下
bool bol1 = false, bol2 = false;
if (bol1 & bol2 == true)
{
Debug.WriteLine("if(False & False = True) CondictionExecuted");
}
if (bol1 & bol2 == false)
{
Debug.WriteLine("if(False & False = False) CondictionExecuted");
}
if (bol1 | bol2 == true)
{
Debug.WriteLine("if(False | False = True) CondictionExecuted");
}
if (bol1 | bol2 == false)
{
Debug.WriteLine("if(False | False = False) CondictionExecuted");
}
bol1 = false; bol2 = true;
if (bol1 & bol2 == true)
{
Debug.WriteLine("if(False & True = True) CondictionExecuted");
}
if (bol1 & bol2 == false)
{
Debug.WriteLine("if(False & True = False) CondictionExecuted");
}
if (bol1 | bol2 == true)
{
Debug.WriteLine("if(False | True = True) CondictionExecuted");
}
if (bol1 | bol2 == false)
{
Debug.WriteLine("if(False | True = False) CondictionExecuted");
}
bol1 = true; bol2 = false;
if (bol1 & bol2 == true)
{
Debug.WriteLine("if(True & False = True) CondictionExecuted");
}
if (bol1 & bol2 == false)
{
Debug.WriteLine("if(True & False = False) CondictionExecuted");
}
if (bol1 | bol2 == true)
{
Debug.WriteLine("if(True | False = True) CondictionExecuted");
}
if (bol1 | bol2 == false)
{
Debug.WriteLine("if(True | False = False) CondictionExecuted");
}
bol1 = true; bol2 = true;
if (bol1 & bol2 == true)
{
Debug.WriteLine("if(True & True = True) CondictionExecuted");
}
if (bol1 & bol2 == false)
{
Debug.WriteLine("if(True & True = False) CondictionExecuted");
}
if (bol1 | bol2 == true)
{
Debug.WriteLine("if(True | True = True) CondictionExecuted");
}
if (bol1 | bol2 == false)
{
Debug.WriteLine("if(True | True = False) CondictionExecuted");
}
此时VS OutPut窗口输出:多么痛的领悟。。。。。
if(True | False = True) CondictionExecuted
if(True | False = False) CondictionExecuted
if(True | True = True) CondictionExecuted
if(True | True = False) CondictionExecuted
if(False | False = False) CondictionExecuted
if(False | True = True) CondictionExecuted
if(True & False = False) CondictionExecuted
if(True | False = True) CondictionExecuted
if(True | False = False) CondictionExecuted
if(True & True = True) CondictionExecuted
if(True | True = True) CondictionExecuted
if(True | True = False) CondictionExecuted
位运算符&和|的运算结果能够给另一个变量, 但是放到if就不行了,所以If要用&&和||