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


当前回答

单个管道(|)是按位的OR操作符。

Two pipes(||)是逻辑或运算符。

它们是不可互换的。

其他回答

一个是“按位或”。

10011b | 01000b => 11011b

另一种是逻辑或。

True或false => True

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

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

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

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

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

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

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

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

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

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

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

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

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