zoukankan      html  css  js  c++  java
  • 逻辑与(&&)与按位与(&)的不同

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

    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

  • 相关阅读:
    D3.js 几种常用的坐标轴
    前端页面的用户体验优化设计
    用can-fixture拦截Ajax并模拟响应
    webpack入门及使用
    CommonJS和AMD规范
    凝思6.0虚拟机搭建--遇到的问题
    凝思6.0安装vmware tools记录
    linux定时任务crontab命令
    find命令使用指南
    关于字体、字形、字符集、字体大小
  • 原文地址:https://www.cnblogs.com/zwffff/p/2000715.html
Copyright © 2011-2022 走看看