我总是在OR表达式中使用||(两个管道),无论是在c#还是PHP中。我偶尔会看到使用单个管道:|。这两种用法有什么区别?使用其中一种时有什么注意事项吗?或者它们是可以互换的吗?
当前回答
|操作符执行其两个操作数的逐位或运算(意味着两边都必须求值为false才能返回false),而||操作符只在需要时求值第二个操作符。
http://msdn.microsoft.com/en-us/library/kxszd0kx (VS.71) . aspx
http://msdn.microsoft.com/en-us/library/6373h346 (VS.71) . aspx
其他回答
java中的简单示例
public class Driver {
static int x;
static int y;
public static void main(String[] args)
throws Exception {
System.out.println("using double pipe");
if(setX() || setY())
{System.out.println("x = "+x);
System.out.println("y = "+y);
}
System.out.println("using single pipe");
if(setX() | setY())
{System.out.println("x = "+x);
System.out.println("y = "+y);
}
}
static boolean setX(){
x=5;
return true;
}
static boolean setY(){
y=5;
return true;
}
}
输出:
using double pipe
x = 5
y = 0
using single pipe
x = 5
y = 5
根据数学定义,OR和and是二进制运算符;他们会验证LHS和RHS条件,类似于|和&。
||和&&通过在LHS条件未满足时停止它们来改变OR和and运算符的属性。
||是逻辑或运算符。听起来你基本知道那是什么。它用于条件语句,如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
希望你们能理解。
所以为了回答最后两个问题,我不会说除了“知道两个运算符之间的区别”之外还有什么需要注意的。它们不能互换,因为它们做的是两种完全不同的事情。
单个管道|是位操作符之一。
从维基百科:
在C编程语言家族中,按位的OR运算符是“|”(管道)。同样,此操作符不能与布尔“逻辑或”对应的操作符混淆,后者将其操作数视为布尔值,并且写为“||”(两个管道)。
单个管道(|)是按位的OR操作符。
Two pipes(||)是逻辑或运算符。
它们是不可互换的。
推荐文章
- Task和Task的区别是什么?启动/等待和异步/等待?
- 如何实现规则引擎?
- 该类型必须是引用类型,以便在泛型类型或方法中使用它作为参数'T'
- 将字符串数组转换为字符串
- 如何将linq结果转换为哈希集或哈希集
- 通用 TryParse
- 使用PHP加密和解密密码的最佳方法是什么?
- HTTP POST返回错误:417“期望失败。”
- 如何实现一个好的脏话过滤器?
- 如何在。net中创建和使用资源
- 为什么Path。以Path.DirectorySeparatorChar开头的文件名合并不正确?
- PHP中的三个点(…)是什么意思?
- Guzzlehttp -如何从guzzle6得到响应的正文?
- 如何在c#中获得正确的时间戳
- 移动一个文件到服务器上的另一个文件夹