我总是在OR表达式中使用||(两个管道),无论是在c#还是PHP中。我偶尔会看到使用单个管道:|。这两种用法有什么区别?使用其中一种时有什么注意事项吗?或者它们是可以互换的吗?
当前回答
根据数学定义,OR和and是二进制运算符;他们会验证LHS和RHS条件,类似于|和&。
||和&&通过在LHS条件未满足时停止它们来改变OR和and运算符的属性。
其他回答
好问题。这两个操作符在PHP和c#中工作相同。
|是位或。它将比较两个值的位。例:1101 | 0010 = 1111。这在使用位选项时非常有用。例:读= 01 (0X01)写= 10 (0X02)读写= 11 (0X03)一个有用的例子是打开文件。一个简单的例子是:
File.Open(FileAccess.Read | FileAccess.Write); //Gives read/write access to the file
||是逻辑或。这是大多数人思考OR的方式,并根据它们的真实性来比较两个值。例:我要去商店或者去购物中心。这是在代码中最常用的。例如:
if(Name == "Admin" || Name == "Developer") { //allow access } //checks if name equals Admin OR Name equals Developer
PHP资源:http://us3.php.net/language.operators.bitwise
c#资源:http://msdn.microsoft.com/en-us/library/kxszd0kx(VS.71).aspx
http://msdn.microsoft.com/en-us/library/6373h346 (VS.71) . aspx
|操作符执行其两个操作数的逐位或运算(意味着两边都必须求值为false才能返回false),而||操作符只在需要时求值第二个操作符。
http://msdn.microsoft.com/en-us/library/kxszd0kx (VS.71) . aspx
http://msdn.microsoft.com/en-us/library/6373h346 (VS.71) . aspx
一个是“按位或”。
10011b | 01000b => 11011b
另一种是逻辑或。
True或false => True
对于位|和逻辑||
OR
位&和逻辑&&
意思是if(a>b | a==0) 在第一个左边>b将被求值,然后a==0将被求值,然后|操作将被执行
但在||如果>b,那么如果不检查下一个RHS
与&和&&类似
if(A>0 & B>0)
它会计算LHS,然后RHS,然后按位& but
in(A>0 && B>0)
如果(A>0)为false(LHS),它将直接返回false;
根据数学定义,OR和and是二进制运算符;他们会验证LHS和RHS条件,类似于|和&。
||和&&通过在LHS条件未满足时停止它们来改变OR和and运算符的属性。
推荐文章
- 实体框架核心:在上一个操作完成之前,在此上下文中开始的第二个操作
- 如何为构造函数定制Visual Studio的私有字段生成快捷方式?
- 如何使用JSON确保字符串是有效的JSON。网
- AppSettings从.config文件中获取值
- 通过HttpClient向REST API发布一个空体
- 如何检查IEnumerable是否为空或空?
- 自动化invokerrequired代码模式
- 原则-如何打印出真正的sql,而不仅仅是准备好的语句?
- 如何从关联PHP数组中获得第一项?
- 在c#代码中设置WPF文本框的背景颜色
- PHP/MySQL插入一行然后获取id
- 在c#中,什么是单子?
- 我如何排序一个多维数组在PHP
- 如何在PHP中截断字符串最接近于一定数量的字符?
- c#和Java中的泛型有什么不同?和模板在c++ ?