16.逻辑运算符

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

×

喜欢就点赞,疼爱就打赏