对bool类型进行逻辑运算
逻辑与
符号:&& 并且
规则:对两个bool值进行逻辑运算,有假则假,同真为真。
bool result = true && false;
Console.WriteLine(result);
result = true && true;
Console.WriteLine(result);
result = false && true;
Console.WriteLine(result);
bool相关的类型bool变量,条件运算符。
逻辑运算符优先级低于条件运算符,算术运算符。
int i = 3;
//1 < i < 5;
//true && true
result = i > 1 && i < 5;
Console.WriteLine(result);
多个逻辑与组合使用:
int i2 = 5;
//true && false && true && true
//在没有括号的情况下,从左到右,依次看即可
//有括号,先看括号内
result = i2 > 1 && i2 < 5 && i > 1 && i < 5;
Console.WriteLine(result);
逻辑或
符号:|| 或者
规则:对两个bool值进行逻辑运算,有真则真,同假为假。
result = true || false;
Console.WriteLine(result);
result = true || true;
Console.WriteLine(result);
result = false || true;
Console.WriteLine(result);
result = false || false;
Console.WriteLine(result);
//false || true
result = 3 > 10 || 3 < 5;
Console.WriteLine(result);
int a = 5;
int b = 11;
//true || true || false
result = a > 1 || b < 20 || a > 5;
Console.WriteLine(result);
逻辑非
符号:!
规则:对一个bool值进行取反,真变假,假变真。
result = !false;
Console.WriteLine(result);
result = !true;
Console.WriteLine(result);
result = !!true;
Console.WriteLine(result);
逻辑非的优先级较高
result = !(3 > 2);
Console.WriteLine(result);
a = 5;
result = !(a > 5);
Console.WriteLine(result);
混合使用优先级问题
规则:!(逻辑非)优先级最高,&&(逻辑与)优先级高于||(逻辑或)
逻辑运算符优先级低于算数运算符,条件运算符(逻辑非除外)
bool gameOver = false;
int hp = 100;
bool isDead = false;
bool isMustOver = true;
//false || false && true || true;
//false || false || true
result=gameOver || hp < 0 && !isDead || isMustOver;
Console.WriteLine(result);
逻辑运算符短路规则
|| 有真则真
只要逻辑与或者逻辑或,左边满足了条件,对于我们来说,已经不重要。
int i3 = 1;
//i3 > 0 true
//逻辑或,有真则真,那左边只要为真了,右边就不重要
result = i3 > 0 || ++i3 >= 1;
Console.WriteLine(i3);
Console.WriteLine(result);
//false && i3 ++ > 1;抛去后面不去计算
//逻辑与,有假则假,那左边只要为假了,右边就不重要
result = i3 < 0 && ++i3 >= 1;
Console.WriteLine(i3);
Console.WriteLine(result);