• 逻辑与(&&)与按位与(&)的不同


    一直以来对于逻辑与(&&)和按位与(&)的区别不是很确定。今天上网找了一下,然后也写代码验证了一下,现将其区别整理如下,供大家一起探讨。

    1. 操作数都为数字时

     a. 对于两个数字进行按位与(&),会将两数字转换为二进制,然后右对齐后(不足位补零),相应位做与操作,如11&3,11的二进制表示是1011,3的二进制表示是11,右对齐后做与操作后,如图所示:

            

             得到的结果是3。

            b. 对于两个数字进行逻辑与(&&),会将两个操作数都转换成Boolean逻辑值(不为0的数字则为true,否则为false),然后再做与操作。

           演示代码如下:

           static void Main()

            {

                int i = 11;  ///二进制是:1011

                int j = 3;  ///二进制是:0011

     

                int num = i & j;

                int num1 = Convert.ToInt32(Convert.ToBoolean(i) && Convert.ToBoolean(j));

     

                Console.WriteLine("按位与结果:{0}", num);

                Console.WriteLine("逻辑与结果:{0}", num1);

            }

      2.  操作数不为数字,为返回逻辑值的等式或方法

      a. 对于按位与(&),会对所有的操作数进行判断。看一下演示代码:

            static void Main()

            {

                if (3 == 5 & ReturnTrue())

                {

                    Console.WriteLine("结果为真");

                }

            }

     

            static bool ReturnTrue()

            {

                Console.WriteLine("执行ReturnTrue方法");

                return true;

            }

            输出结果是:执行ReturnTrue方法

           分析如下:等式3==5返回结果false,由输出结果我们知道,在得到等式3==5返回false的情况下,仍然执行了ReturnTrue()方法,输出结果“执行ReturnTrue方法”

          b. 对于逻辑与(&&),会逐个判断操作数,当不符合时,后面的操作数将不再进行判断。看一下演示代码:

           static void Main()

            {

                if (3 == 5 && ReturnTrue())

                {

                    Console.WriteLine("结果为真");

                }

            }

     

            static bool ReturnTrue()

            {

                Console.WriteLine("执行ReturnTrue方法");

                return true;

             }

                这段代码不会输出任何结果。

            分析如下:等式3==5返回结果false,由输出结果我们知道,在得到等式3==5返回false的情况下,ReturnTrue()方法并未执行。

    得到的结果是3

  • 相关阅读:
    C#线程的IsBackgroud属性动态设置
    asp.net 异步
    IBM一些Java文章
    (一)Apollo配置中心介绍
    样式表中的 element.style样式如何修改
    jquery中的append和js原生中的innerhtml的区别
    如何在datagrid中的column获取json数据
    快速排序
    冒泡排序
    二进制中有多少个1?
  • 原文地址:https://www.cnblogs.com/zwffff/p/2000715.html
Copyright © 2020-2023  润新知