码迷,mamicode.com
首页 > 其他好文 > 详细

||和|的区别

时间:2016-04-21 21:55:25      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

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

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。

 

||和|的区别

标签:

原文地址:http://www.cnblogs.com/wuliangdqz/p/5418831.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!