对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);
05-30 19:23