C#之按位或‘|‘按位与‘&’bool类型的用法详细解释

这里不介绍按位或按位与的二进制算法,网上大都说的都是关于int类型二进制的按位与和按位或的用法,这里我们来看看bool类型的用法。

具体看代码

 static void Main(string[] args)
        {
            int i = 0;
            Console.WriteLine("========================按位与");
            Console.WriteLine("false&true\t{0}",false &true);
            Console.WriteLine("true&true\t{0}", true & true);
            Console.WriteLine("true&false\t{0}", true & false);
            Console.WriteLine("false&false\t{0}", false & false);
            Console.WriteLine("false&true\t{0}", false & ((i=i+7)>2));

            //&不管左值为真还是假   右值都会运算

            Console.WriteLine("i="+i);





            Console.WriteLine("==================按位或运算");

            Console.WriteLine("false|true\t{0}", false | true);
            Console.WriteLine("true|true\t{0}", true | true);
            Console.WriteLine("true|false\t{0}", true | false);
            Console.WriteLine("false|false\t{0}", false | false);
            Console.WriteLine("false|true\t{0}", false | ((i = i + 7) > 2));
            Console.WriteLine("i=" + i);

        }

结果:在这里插入图片描述

我们可以根据结果发现,按位与和按位或不像逻辑与和逻辑或,会出现短路情况,而是不管你左值是真是假,右值都会执行。

C#中,`|`、`||`、`&` 和 `&&` 都是用来处理布尔运算符的,它们用于组合条件并控制程序流程。 1. **位或操作符 (|)**: - `|` 运算符对两个布尔值进行按位或操作,如果任一操作数为真,则结果为真。它不会改变原始变量,常用于合并多个标志或权限检查。 ```csharp bool flagA = true; bool flagB = false; bool combinedFlag = flagA | flagB; // 结果为true,因为至少有一个为真 ``` 2. **逻辑或操作符(||):** - `||` 或者也称为逻辑“或”,当其中一个操作数为真时,整个表达式的值就为真,不需要两者都为真。这个运算符常用于条件判断的短路逻辑,即只要满足其中的一个条件,就不会继续检查其他条件。 ```csharp if (flagA || flagB) { ... } // 如果flagA为真则直接进入if块,无需检查flagB ``` 3. **位与操作符 (&):** - `&` 对两个布尔值进行按位与操作,只有当两个操作数都是真时,结果才为真。同样适用于合并标志或设置特定位。 ```csharp bool flagA = true; bool flagB = false; bool combinedFlag = flagA & flagB; // 结果为false,因为两者都需为真 ``` 4. **逻辑与操作符(&&):** - `&&` 或逻辑“与”在评估第二个操作数之前会先检查第一个。如果第一个操作数为假,那么整个表达式的结果将是假,不必考虑第二个条件。这也是短路逻辑的一部分。 ```csharp if (!flagA && flagB) { ... } // 只有当flagA为假时,才会检查flagB ``` 总结一下,`|` 和 `&` 是位级操作,侧重于实际的位表示;而 `||` 和 `&&` 是逻辑操作,关注的是条件之间的关系和效率优化。在选择使用哪种时,需要根据具体的业务需求和性能考量来进行。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值