逻辑运算符用来连接多个 bool 类型表达式,实现多个条件的复合判断。
C#中的逻辑运算符包括:逻辑非( ! )、逻辑与( &&、& )、逻辑或( ||、| )。
符号 && 并且
规则: 对两个布尔值进行运算 有假则假 同真为真
- bool result = true && false;
- Console.WriteLine(result); // false
- result = true && true;
- Console.WriteLine(result); // true
- result = false && false;
- Console.WriteLine(result); // false
-
- int a = 10;
- int b = 20;
- result = a < b && a > 5; // true
bool 相关的类型 bool 变量和逻辑运算符搭配使用
// 逻辑运算符的优先级 低于 条件运算符 低于 算数运算符
- result = a + 10 >= b && a <= b - 10; // true
- Console.WriteLine(result);
符号 || 或者
规则: 对两个bool值进行逻辑运算 有真则真 同假则假
- result = true || false;
- Console.WriteLine(result); // true
- result = true || true;
- Console.WriteLine(result); // true
- result = false || false;
- Console.WriteLine(result); // false
符号 ! 取反
规则: 对两个bool值进行取反 真变假 假变真
- result = !true;
- Console.WriteLine(result); // false
- result = !!result;
- Console.WriteLine(result); // false
逻辑非的优先级 较高
result = !(3 < 2); // true
逻辑运算符 非的优先级 最高 与的优先级 大于 或的优先级
逻辑运算符优先级 低于 条件运算符 算数运算符(逻辑非除外)
- result = !true && true; // false
- Console.WriteLine(result);
- result = !false && true; // true
- Console.WriteLine(result);
- result = !false && false; // false
- Console.WriteLine(result);
-
- result = !true || true; // true
- Console.WriteLine(result);
- result = !false || true; // true
- Console.WriteLine(result);
- result = !false || false; // true
- Console.WriteLine(result);
-
- result = true || true && false;
- Console.WriteLine(result); // true
- result = true && true || false;
- Console.WriteLine(result); // true
只要逻辑运算符 左边满足条件
右边的内容对我们来讲 已经不重要
- int i = 5;
- result = i > 0 || i < 5; // true
result = false && i > 3; // false
- int i2 = 10;
- int i3 = 20;
- result = !((i + 10 < i2 || i3 > i2) && i3 < i + 20 && i < i2 || false);//False
- Console.WriteLine(result);
- result = (i - 10 < i2 || i3 < i2 && i3 < i + 20 && i < i2 || false); // true
- Console.WriteLine(result);
- result = (i3 < i2 && i3 < i + 20 && i - 10 < i2 && i < i2 && !true); // false
- result = ( i3 < i2 && i3 < i + 20 && i - 10 < i2 || !(i < i2) && !false);// false
- Console.WriteLine(result);