||和|的区别

在学习编程中,||和| 被解释为:||是逻辑操作符,而|是位操作符,但是它们的具体使用上的区别是什么呢?

1、当||和|作为逻辑操作符时,看看它们都有什么作用。请看下面例子:

 1     int i = 8;
 2     int j = 8;
 3     int k = 8;
 4     int h = 8;
 5     int m = 8;
 6     int n = 8;
 7     bool a = (i > 5) || ((i = i + 5) > 10); //................(1)
 8     bool b = (j > 5) | ((j = j + 5) > 10);  //................(2)
 9     bool c = (k > 15) || ((k = k + 5) > 10);//................(3)
10     bool d = (h > 15) | ((h = h + 5) > 10); //................(4)
11     bool e = (m > 15) || ((m = m - 5) > 10);//................(5)
12     bool f = (n > 15) | ((n = n - 5) > 10); //................(6)

请看上图输出结果:

对于(1)来说,i > 5 为True,(i = i + 5) > 10为True,那么a就为True,即,两者都为True则a为True。此时i=8。说明(i = i + 5) > 10没有执行。

对于(2)来说,j > 5为True,(j = j + 5) > 10为True,那么b就为True,即,两者都为True则a为True。此时j=13。说明(j = j + 5) > 10执行了。

对于(3)来说,k > 15为False,(k = k + 5) > 10为True,那么c就为True,即,一True一False则c为True。此时k=13。说明(k = k + 5) > 10执行了。

对于(4)来说,h > 15为False,(h = h + 5) > 10为True,那么d就为True,即,一True一False则d为True。此时h=13。说明(h = h + 5) > 10执行了。

对于(5)来说,m > 15为False,(m = m + 5) > 10为False,那么e就为False,即,两者都为False则d为False。此时m=3。说明(m = m + 5) > 10执行了。

对于(6)来说,n > 15为False,(n = n + 5) > 10为False,那么f就为False,即,两者都为False则f为False。此时n=3。说明(n = n + 5) > 10执行了。

由此可以总结一句话:

||:逻辑或,两False才为False,一True即为True。即:两假才为假,一真即为真。

| :逻辑或,两False才为False,一True即为True。即:两假才为假,一真即为真。

区别:

表达式(1) || 表达式(2),只有表达式(1)为False时,表达式(2)才会执行。

表达式(1) |  表达式(2),无论表达式(1)为True或False,表达式(2)都会执行。

2、当|作为位操作符时,看看它有什么作用。请看下面例子:

1     int i = 6; //6的二进制为0110
2 
3     i = (i | 5); //5的二进制为0101

请看上图输出结果:

当|为位操作符时,6和5进行了位运算,而6的二进制为0110,5的二进制为0101,逻辑&后,此时i的值的二进制为0111,对应的十进制为7。

 

posted @ 2016-04-21 21:24  我是一个学徒  阅读(2381)  评论(0编辑  收藏  举报