我总是在OR表达式中使用||(两个管道),无论是在c#还是PHP中。我偶尔会看到使用单个管道:|。这两种用法有什么区别?使用其中一种时有什么注意事项吗?或者它们是可以互换的吗?


当前回答

||是逻辑或运算符。听起来你基本知道那是什么。它用于条件语句,如if, while等。

condition1 || condition2

如果条件1或条件2为真,则返回true。

|是位或操作符。它用于对两个数运算。你单独看每个数字的每一位,如果其中一位至少在一个数字中是1,那么结果位也将是1。下面是一些例子:

A = 01010101
B = 10101010
A | B = 11111111

A = 00000001
B = 00010000
A | B = 00010001

A = 10001011
B = 00101100

A | B = 10101111

希望你们能理解。

所以为了回答最后两个问题,我不会说除了“知道两个运算符之间的区别”之外还有什么需要注意的。它们不能互换,因为它们做的是两种完全不同的事情。

其他回答

||是逻辑或运算符。听起来你基本知道那是什么。它用于条件语句,如if, while等。

condition1 || condition2

如果条件1或条件2为真,则返回true。

|是位或操作符。它用于对两个数运算。你单独看每个数字的每一位,如果其中一位至少在一个数字中是1,那么结果位也将是1。下面是一些例子:

A = 01010101
B = 10101010
A | B = 11111111

A = 00000001
B = 00010000
A | B = 00010001

A = 10001011
B = 00101100

A | B = 10101111

希望你们能理解。

所以为了回答最后两个问题,我不会说除了“知道两个运算符之间的区别”之外还有什么需要注意的。它们不能互换,因为它们做的是两种完全不同的事情。

好问题。这两个操作符在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

一个是“按位或”。

10011b | 01000b => 11011b

另一种是逻辑或。

True或false => True

根据数学定义,OR和and是二进制运算符;他们会验证LHS和RHS条件,类似于|和&。

||和&&通过在LHS条件未满足时停止它们来改变OR和and运算符的属性。

& -(条件1和条件2):检查两种情况,即使第一个是假的

&& -(条件1 &&条件2):如果情况一,就不用检查第二种情况 是假的

&& -操作符将使你的代码运行得更快,更专业,很少使用

| -(条件1 |条件2):检查两种情况,即使情况1为真

|| -(条件1 ||条件2):如果先检查,就不麻烦检查第二种情况 一个是正确的

|| -操作符将使您的代码运行得更快,专业|很少使用