16.运算符-逻辑运算符
16.1 知识点
逻辑与
// 符号 && 并且
// 规则: 对两个bool值进行逻辑运算,有假则假,同真为真
bool result = true && false;
Console.WriteLine(result);// false
result = true && true;
Console.WriteLine(result);// true
result = false && true;
Console.WriteLine(result);// false
// 使用逻辑运算符时,左右两边要都是bool相关的类型
// bool相关的类型有: bool变量 条件运算符
// 逻辑运算符优先级低于条件运算符 算术运算
// true && true
result = 3 > 1 && 1 < 2;
Console.WriteLine(result);// true
// 可以用逻辑运算符对变量的取值范围进行判断
int i = 3;
// 1 < i < 5;
// true && true
result = i > 1 && i < 5;
Console.WriteLine(result);// true
// 多个逻辑与 组合运用
int i2 = 5;
// 在没有括号的情况下,从左到右,依次看即可
// 有括号,先看括号内
// true && false && true && true
result = i2 > 1 && i2 < 5 && i > 1 && i < 5;
Console.WriteLine(result);// false
逻辑或
// 符号 || 或者
// 规则: 对两个bool值进行逻辑运算,有真则真,同假为假
result = true || false;
Console.WriteLine(result);// true
result = true || true;
Console.WriteLine(result);// true
result = false || true;
Console.WriteLine(result);// true
result = false || false;
Console.WriteLine(result);// false
// false || true
result = 3 > 10 || 3 < 5;
Console.WriteLine(result);// true
int a = 5;
int b = 11;
// true || true || false
result = a > 1 || b < 20 || a > 5;
Console.WriteLine(result);// true
// ? && ?
// ? || ?
// ? 可以是写死的bool变量 或者 bool值
// 还可以是 条件运算符相关
逻辑非
// 符号 !
// 规则: 对一个bool值进行取反,真变假,假变真
result = !true;
Console.WriteLine(result);// false
result = !false;
Console.WriteLine(result);// true
result = !!true;
Console.WriteLine(result);// true
// 逻辑非的优先级比条件运算符高,后面进行条件运算符的时候要加括号
result = !(3 > 2);
Console.WriteLine(result);// false
a = 5;
result = !(a > 5);
Console.WriteLine(result);// true
混合使用优先级问题
// 规则: !(逻辑非)优先级最高 &&(逻辑与)优先级高于||(逻辑或)
// 逻辑运算符优先级低于算数运算符 条件运算符(逻辑非除外)
bool gameOver = false;
int hp = 100;
bool isDead = false;
bool isMustOver = true;
result = gameOver || hp < 0 && !isDead || isMustOver;
// false || false && true || true;
// false || false || true;
Console.WriteLine(result);// true
逻辑运算符的短路规则
int i3 = 1;
// 逻辑或 有真则真,左边只要为真了,右边就不重要,就不会运算了
result = i3 > 0 || ++i3 >= 1;
Console.WriteLine(i3);// 1
Console.WriteLine(result);// true
// 逻辑与 有假则假,左边只要为假了,右边就不重要,就不会运算了
result = i3 < 0 && i3++ > 1;
Console.WriteLine(i3);// 1
Console.WriteLine(result);// false
// false && i3 ++ > 1; 抛弃后面不去计算
// 若左边不满足条件,还是会进行右边或者下一步的运算
16.2 知识点代码
using System;
namespace Lesson13_逻辑运算符
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("逻辑运算符");
//逻辑运算符 其实就是对bool类型 进行逻辑运算
#region 知识点一 逻辑与
//符号 && 并且
//规则 对两个bool值进行逻辑运算 有假则假 同真为真
bool result = true && false;
Console.WriteLine(result);//false
result = true && true;
Console.WriteLine(result);//true
result = false && true;
Console.WriteLine(result);//false
//使用逻辑运算符时 左右两边要都是bool相关的类型
//bool相关的类型有: bool变量 条件运算符
//逻辑运算符优先级 低于 条件运算符 算术运算
// true && true
result = 3 > 1 && 1 < 2;
Console.WriteLine(result);//true
//可以用逻辑运算符对变量的取值范围进行判断
int i = 3;
// 1 < i < 5;
// true && true
result = i > 1 && i < 5;
Console.WriteLine(result);//true
//多个逻辑与 组合运用
int i2 = 5;
//在没有括号的情况下 从左到右 依次看即可
//有括号 先看括号内
// true && false && true && true
result = i2 > 1 && i2 < 5 && i > 1 && i < 5;
Console.WriteLine(result);//false
#endregion
#region 知识点二 逻辑或
//符号 || 或者
//规则 对两个bool值进行逻辑运算 有真则真 同假为假
result = true || false;
Console.WriteLine(result);//true
result = true || true;
Console.WriteLine(result);//true
result = false || true;
Console.WriteLine(result);//true
result = false || false;
Console.WriteLine(result);//false
// false || true
result = 3 > 10 || 3 < 5;
Console.WriteLine(result);//true
int a = 5;
int b = 11;
// true || true || false
result = a > 1 || b < 20 || a > 5;
Console.WriteLine(result);//true
// ? && ?
// ? || ?
// ? 可以是写死的bool变量 或者 bool值
// 还可以是 条件运算符相关
#endregion
#region 知识点三 逻辑非
//符号 !
//规则 对一个bool值进行取反 真变假 假变真
result = !true;
Console.WriteLine(result);//false
result = !false;
Console.WriteLine(result);//true
result = !!true;
Console.WriteLine(result);//true
//逻辑非的 优先级 比条件运算符高 后面进行条件运算符的时候要加括号
result = !(3 > 2);
Console.WriteLine(result);//false
a = 5;
result = !(a > 5);
Console.WriteLine(result);//true
#endregion
#region 知识点四 混合使用优先级问题
// 规则 !(逻辑非)优先级最高 &&(逻辑与)优先级高于||(逻辑或)
// 逻辑运算符优先级 低于 算术运算符 条件运算符(逻辑非除外)
bool gameOver = false;
int hp = 100;
bool isDead = false;
bool isMustOver = true;
result = gameOver || hp < 0 && !isDead || isMustOver;
//false || false && true || true;
//false || false || true;
Console.WriteLine(result);//true
#endregion
#region 知识点五 逻辑运算符短路规则
int i3 = 1;
//逻辑或 有真则真 左边只要为真了 右边就不重要 就不会运算了
result = i3 > 0 || ++i3 >= 1;
Console.WriteLine(i3);//1
Console.WriteLine(result);//true
// || 有真则真
// 只要 逻辑与或者逻辑或 左边满足了条件
// 例如左边的i3 > 0已经为true
// 那么 右边的内容 对于我们来说 已经不重要 右边的内容就不会运算了
//逻辑与 有假则假 左边只要为假了 右边就不重要 就不会运算了
result = i3 < 0 && i3++ > 1;
Console.WriteLine(i3);//1
Console.WriteLine(result);//false
// false && i3 ++ > 1;抛弃后面不去计算
//若左边不满足条件 还是会进行右边或者下一步的运算
#endregion
}
}
}
16.3 练习题
求打印结果是什么?
Console.WriteLine(true || true); // true
Console.WriteLine(false || true); // true
Console.WriteLine(true && true); // true
Console.WriteLine(true && false); // false
Console.WriteLine(!true); // false
求打印结果是什么?
bool gameOver;
bool isWin;
int health = 100;
gameOver = true;
isWin = false;
Console.Write(gameOver || isWin && health > 0); // true || false && true
Console.Write(gameOver || isWin && health > 0); // true
16.4 练习题代码
using System;
namespace Lesson13_练习题
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("逻辑运算符练习题");
#region 练习题一
//求打印结果是什么?
Console.WriteLine(true || true);// true
Console.WriteLine(false || true);// true
Console.WriteLine(true && true);// true
Console.WriteLine(true && false);//false
Console.WriteLine(!true);//false
#endregion
#region 练习题二
//求打印结果是什么?
bool gameOver;
bool isWin;
int health = 100;
gameOver = true;
isWin = false;
// true || false && true
Console.Write(gameOver || isWin && health > 0);//true
#endregion
}
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com