[c#]&、&&、|、||的区别

& 运算符既可作为一元运算符也可作为二元运算符。

一元 & 运算符返回操作数的地址:

为整型和 bool 类型预定义了二进制 & 运算符。 对于整型,& 计算操作数的逻辑按位“与”。 对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,结果才为 true。

1.& 运算符计算两个运算符,与第一个操作数的值无关。 例如:

            int i = 0;
            
            Console.WriteLine(false & ++i == 1);

结果是FALSE.

也可用于二元运算符:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace test23
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(true&true);
            Console.WriteLine(true&false);
            Console.WriteLine(false&false);
 
            Console.WriteLine("0x{0:x}",0xf8&0x3a);
            /*
             * 0xf8:1111 1000
             * 0x3a:0011 1010
             * 0011 1000==0x38    14
             */
            Console.ReadKey();
        }
    }
}

2. | 运算符是为整型和 bool 预定义的。 对于整型, | 计算操作数的按位“或”。 对于 bool 操作数, | 计算操作数的逻辑“或”;也就是说,当且仅当两个操作数均为 false 时,结果才为 false 。

3. &&

条件“与”运算符 (&&) 执行其 bool 操作数的逻辑“与”运算,但仅在必要时才计算第二个操作数。

如果 x是 false, y 不会计算,因为,和操作的结果是 false ,无论 y 的值为什么。 这被称作为“短路”计算。

4. ||

条件或运算符 (||) 执行的逻辑或其 bool 操作数。 如果第一个操作数计算结果为 true,第二个操作数对象不会计算。 如果第一个操作数计算结果为false,第二个运算符确定或表达式整体是否计算结果为 true 或 false。

如果 x 是 true,y 不会计算无论 y,的值,因为或操作是 true。 此概念称为“短路计算”。

& 是做逻辑与运算

比如 1 & 1 = 1

2 & 1 = 0 将十进制数据转换成二进制数据进行比较 (10 & 01 = 00)

|是做逻辑或运算

1|1 = 1

2 | 1 = 3 (10 | 01 = 11)

>> 是右移位运算 相等于除以2

<< 是左移位,相等于乘以2

逻辑与和逻辑或都是给整数的运算

&和|

都是把左右两边变成二进制,然后逐位进行运算

>>和<<也是变成二进制,然后往左边和右边移位

比如

17和13

17 二进制是 10001

13二进制是 01101

17 & 13 = 10001 & 01101 = 00001 也就是1

17 | 13 = 10001 | 01101 = 11101 也就是 29

17>> 就是10001 右移位 变成 01000 就变成8了

17<< 就是10001 左移位 变成100010 变成34 了

————————————————

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C#中,`&amp;` 和 `&amp;&amp;` 以及 `|` 和 `||` 都是用于逻辑运算的操作符,但它们之间有一些重要的区别。 `&amp;` 是按位与操作符,用于对两个操作数的每一位执行逻辑与操作。它会计算两个操作数的每一位,并返回一个新的值,其中每一位都是根据相应的操作数位进行计算的。即使第一个操作数的某一位为0,第二个操作数对应的位也会被计算。 `&amp;&amp;` 是逻辑与操作符,用于对两个布尔表达式执行逻辑与操作。它只在第一个表达式为真时才会计算第二个表达式。如果第一个表达式为假,整个逻辑表达式的结果就为假,并且不会继续计算第二个表达式。 `|` 是按位或操作符,用于对两个操作数的每一位执行逻辑或操作。它会计算两个操作数的每一位,并返回一个新的值,其中每一位都是根据相应的操作数位进行计算的。即使第一个操作数的某一位为1,第二个操作数对应的位也会被计算。 `||` 是逻辑或操作符,用于对两个布尔表达式执行逻辑或操作。它只在第一个表达式为假时才会计算第二个表达式。如果第一个表达式为真,整个逻辑表达式的结果就为真,并且不会继续计算第二个表达式。 需要注意的是,按位操作符 `&amp;` 和 `|` 可以用于整数类型的操作数,而逻辑操作符 `&amp;&amp;` 和 `||` 只能用于布尔类型的操作数。另外,逻辑操作符具有短路行为,这意味着它们在满足计算结果时可能不会对所有表达式进行求值。这是与按位操作符的一个重要区别

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DAGUNIANGZHOU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值