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


当前回答

单个管道|是位操作符之一。

从维基百科:

在C编程语言家族中,按位的OR运算符是“|”(管道)。同样,此操作符不能与布尔“逻辑或”对应的操作符混淆,后者将其操作数视为布尔值,并且写为“||”(两个管道)。

其他回答

一个是“按位或”。

10011b | 01000b => 11011b

另一种是逻辑或。

True或false => True

单个管道“|”是“按位”或,应该只在知道自己在做什么的时候使用。双管“||”是一个逻辑或,可以在逻辑语句中使用,如“x == 0 || x == 1”。

这里有一个按位或的例子:如果a=0101和b=0011,那么|b=0111。如果您正在处理一个将任何非零视为真值的逻辑系统,那么按位或将以与逻辑或相同的方式起作用,但其对应的(按位和,“&”)将不是。另外按位或不执行短路计算。

||是逻辑或运算符。听起来你基本知道那是什么。它用于条件语句,如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

希望你们能理解。

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

|操作符执行其两个操作数的逐位或运算(意味着两边都必须求值为false才能返回false),而||操作符只在需要时求值第二个操作符。

http://msdn.microsoft.com/en-us/library/kxszd0kx (VS.71) . aspx

http://msdn.microsoft.com/en-us/library/6373h346 (VS.71) . aspx

单个管道|是位操作符之一。

从维基百科:

在C编程语言家族中,按位的OR运算符是“|”(管道)。同样,此操作符不能与布尔“逻辑或”对应的操作符混淆,后者将其操作数视为布尔值,并且写为“||”(两个管道)。