zoukankan      html  css  js  c++  java
  • 逻辑与(&&、&)和逻辑或(||、|)

    这四个逻辑运算符,大家都知道,但是有时候会凌乱,这里用程序来解释一下,以免忘了。(根据大家反应说:这文章没有解释清楚它们的区别、用法,其实文章主要说的是,如果将这四个运算符用于条件判断,那么它们会是什么结果,写文章的初衷不是讲它们的本质)

    1.逻辑与

    &&和&翻译成中文就是“且”的意思,都是当两个条件同时成立时执行,既然是这样,为什么要两个呢,一起来看下它们的区别,直接上代码:

    public void fun()
    {
         int c = 0; int d = 0;
         if ((c = 10) < d && (d = 10) <= c)//在条件语句中给变量赋值,方便观察条件是否有执行,不要被这个给弄乱了,其实就是先赋值后判断
         {
              Console.WriteLine("&& c={0},d={1}", c, d);
         }
         Console.WriteLine("&& c={0},d={1}", c, d);
         Console.WriteLine("---------------------------------");
    
         int e = 0; int f = 0;
         if ((e = 10) < f & (f = 10) <= e)
         {
             Console.WriteLine("& e={0},f={1}", e, f);
         }
         Console.WriteLine("& e={0},f={1}", e, f);
    }

    会是什么个结果呢?大家看图:

    结论是:“&&”当从左到右有条件为false时,就直接跳出if语句,不再往下判断,所以程序中的d不会被赋值;而“&”是无论从左到右的条件是不是为true,都会执行所有的判断条件,所以程序中的f会被赋值为10。

    2.逻辑或

    ||和|翻译成中文就是“或”的意思,都是当两个条件中至少有一个成立时执行,一起来看下它们的区别,直接上代码:

    private void fun()
    {
         int x = 0; int y = 0;
         if ((x = 10) > y || (y = 10) < x)
         {
              Console.WriteLine("|| x={0},y={1}", x, y);
         }
    
         Console.WriteLine("---------------------------------");
    
         int a = 0; int b = 0;
         if ((a = 10) > b | (b = 10) < a)
         {
              Console.WriteLine("| a={0},b={1}", a, b);
         }    
    }

    直接看结果图:

    结论是:“||”当有一个条件成立时,就不再往下执行判断条件而直接执行if的内容,所以程序中的y不会被赋值为10;“|”从左到右无论是否有条件成立,都会将所有的判断语句执行。

    附上本实例完整代码,以便大家体验,建立个控制台应用程序复制黏贴,直接用:

    static void Main(string[] args)
    {
         int x = 0; int y = 0;
         if ((x = 10) > y || (y = 10) < x)
         {
              Console.WriteLine("|| x={0},y={1}", x, y);
              }
    
              Console.WriteLine("---------------------------------");
    
              int a = 0; int b = 0;
              if ((a = 10) > b | (b = 10) < a)
              {
                  Console.WriteLine("| a={0},b={1}", a, b);
              }
    
              Console.WriteLine("---------------------------------");
    
              int c = 0; int d = 0;
              if ((c = 10) < d && (d = 10) <= c)
              {
                  Console.WriteLine("&& c={0},d={1}", c, d);
              }
              Console.WriteLine("&& c={0},d={1}", c, d);
              Console.WriteLine("---------------------------------");
    
              int e = 0; int f = 0;
              if ((e = 10) < f & (f = 10) <= e)
              {
                  Console.WriteLine("& e={0},f={1}", e, f);
              }
              Console.WriteLine("& e={0},f={1}", e, f);
              Console.ReadKey();
          }

    总结:一句话概括——当是两个运算符(&&,||)时,当第一个条件成立(||)或违反(&&),就不再继续判断之后的条件,所以效率高一点;当是一个运算符(&,|)时,无论第一个条件是否成立(|)或违法(&),都会继续执行剩下的判断语句,所以效率低一点。

  • 相关阅读:
    ssh session 共享
    python 快速开启http服务
    GCC 默认头文件搜索路径
    GCC 部分单元测试编译失败
    随机森林与GBDT
    DecisionTree
    SVM
    KDDCUP CTR预测比赛总结
    剑指offer-java
    搜狗搜索日志传输与分析
  • 原文地址:https://www.cnblogs.com/LJP-JumpAndFly/p/3962810.html
Copyright © 2011-2022 走看看