码迷,mamicode.com
首页 > 编程语言 > 详细

C,C#,C++中&&和||,&和|的联系和区别

时间:2014-10-01 10:32:11      阅读:336      评论:0      收藏:0      [点我收藏+]

标签:blog   http   使用   ar   sp   c   log   html   amp   

本文来自:http://www.cnblogs.com/GT_Andy/archive/2010/03/30/1921805.html

 

 

两者计算结果相同(针对各自的运算对象),只是性能上有差别而已。

&&和||:逻辑运算符

&和|:按位运算符

 

&&是且的意思,a&&b 两者都为真才为真.
||是或的意思,a||b 两者有一为真即真.

&,|是位运算符.即对位进行运算,
如00000011 & 00000001=00000001
00000011 | 00000001=00000011

 

对于(&&,||),运算的对象是逻辑值,也就是True/False
运算结果只有下列四种情况。
True  && True  = True
True  && False = False
False && True  = False
False && False = False

True  || True  = True
True  || False = True
False || True  = True
False || False = False

对于(&,|),运算的对象是位,也就是1/0
运算结果只有下列四种情况。
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

&&和&对于他们各自的运算对象来说,结果是一样的。
同理,||和|也是一样的。

比如:5&&2 的运算结果,是这样对待的。
首先5,非零,即为True
2,非零,True 
True&&True = True
结果即为True。整个的运算过程是需要做变换的。并不是直接使用操作数的二进制直接比较。所以结果是不同的。在比较的时候,True应该会被转成类似11111111这样的二进制的值,False可能会转成00000000。

这里的一样,说的是针对运算对象。
&&的运算对象是True/False    不管你使用的是什么类型的表达式,他首先要转换为True/False中的一个,然后才参与运算。
&的运算对象就是0/1,不需要转换,有多少位直接计算多少位就可以了。

C,C#,C++中&&和||,&和|的联系和区别

标签:blog   http   使用   ar   sp   c   log   html   amp   

原文地址:http://www.cnblogs.com/zhouyunbaosujina/p/4003028.html

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