黑马程序员技术交流社区

标题: &&、&、||、|的区别 [打印本页]

作者: pphdsny3    时间: 2012-8-23 09:51
标题: &&、&、||、|的区别
本帖最后由 黑马王鹏 于 2012-8-23 09:53 编辑

&&、&、||、|他们有什么区别么?
这样去区分他们的用法,最好理解!
最好能说说底层实现!

作者: 杨卓儒    时间: 2012-8-23 09:56
本帖最后由 杨卓儒 于 2012-8-23 10:09 编辑

如果都表示逻辑运算的话,
&与&& 以及 |与||的结果都是一样的

但是逻辑与逻辑或 只要判断完第一个条件便可以得出结果为真假
而按位与和按位或判断完第一个条件后,必须要判断第二个条件以后才能给出结果的真假



作者: 刘芮铭    时间: 2012-8-23 09:58
本帖最后由 刘芮铭 于 2012-8-23 10:01 编辑

简单的理解是这样的:
(1)&和&&均是与的意思!
&是无论符号2边真假,都需要进行运算比较!
&&是如果需要真的情况,左边出现假,右边就不用比较了!表达式肯定为假!
(2)|与||都是非的意思:与上述的有异曲同工之效!
|是无聊符号2边真假,都需要比较!
||是如果需要真的情况,左边出现真,右边就不用比较了!表达式肯定为真!


好处:&&和||在一些情况下可以节省时间!提高效率!
作者: 焦晨光    时间: 2012-8-23 11:07
&&(||)会出现短路,&(|)不会
也就是&&(||)在判断了前面的表达式的值后,如果能得出结论,就不去判断后面表达式的值了
而&(|)会脚踏实地,循规蹈矩的对两边表达式的值都进行判断

底层实现就是:
&&(&): 两边的表达式都为true才为true ,否则都为false
||(|):两边的表达式都为false时才为false,否则都为true
作者: pphdsny3    时间: 2012-8-23 11:23
理解了,这样才记得住...谢谢!
作者: 刘学    时间: 2012-8-23 11:25
&& || 是逻辑运算符,& | 是位运算符,同时也能用于逻辑运算,那么它俩在逻辑运算上的区别是&& ||,具有短路功能,如 false && true=false  当运算到第一个为false时就不在判断&&右侧,因为结果肯定为false,那么用&运算则没有短路功能,&运算符的不管能不能确定结果左右都会进行判断。
作者: 高薇    时间: 2012-8-23 11:45
&与  |或  ^异或  !非  && ||

   6>x>3在程序中是不被允许的;因此,逻辑运算符用于连接布尔类型的表达式;

&---必须两边的布尔表达式都为真,结果才为真;

| ----只要有一个布尔表达式为真,结果就为真;

^----两个布尔表达式结果不相同,结果就为真;

!true=false;  !!true=true

&&双与(短路)

&和&&的区别:两者在运算结果上没有任何区别;

两个布尔表达式都为真的情况下,运算结果是没有任何区别的;

&&的时候,只要前者为false,后边的表达式压根就不会再执行了,也就是短路了;

&的时候呢,即使前者为false,后边的表达式也还会再执行一遍;

使用双与:执行效率大大提高,

||(双或)---有一个为真就行

|和||的区别:同样的,在运算结果上是没有任何区别的;

|:两边都参与运算;

||:只要检测出第一个表达式结果为true,第二个表达式也是不会执行的;







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2