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


当前回答

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

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

其他回答

对于位|和逻辑||

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;

一个是“按位或”。

10011b | 01000b => 11011b

另一种是逻辑或。

True或false => True

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

从维基百科:

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

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

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

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

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

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