黑马程序员技术交流社区

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

作者: linder_qzy    时间: 2015-3-5 10:13
标题: &和&&、|和||的区别

问下&和&&以及|和||的区别
作者: z47057554    时间: 2015-3-5 10:40
A&B与A&&B
与运算规则:有一个错就全错,那么问题来了
如果A错,那么可以肯定整个表达式A与B是错的,那我还要继续判断吗
要:就是A&B,会继续判断B,最后根据与的规则返回假,浪费资源
不要:就是A&&B,不会再判断B了,直接返回假,比上面那个高效

A|B与A||B 同理
或运算规则:有一个对就全对,那么问题又来了
如果A对,那么可以肯定整个表达式A或B是对的,那我还要继续判断吗
要:就是A|B,会继续判断B,最后根据与的规则返回真,浪费资源
不要:就是A||B,不会再判断B了,直接返回假,比上面那个高效


作者: yangruijing    时间: 2015-3-5 10:48
“&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。

作者: linder_qzy    时间: 2015-3-6 09:00
z47057554 发表于 2015-3-5 10:40
A&B与A&&B
与运算规则:有一个错就全错,那么问题来了
如果A错,那么可以肯定整个表达式A与B是错的,那我还 ...

回答的很明白 总是把这些细节记混淆
作者: huangchunwei    时间: 2015-3-6 10:10
&和&&的区别:都是逻辑运算符,连接的都是两个boolean类型的表达式。
&(逻辑与):两边都为true时,结果为true,否则false。无论左边是什么,右边都参与运算。
&&(短路与):只要左边为false,则右边就不参与运算。

| 和 || 的区别:都是逻辑运算符,连接的都是两个boolean类型的表达式。
| (逻辑或):两边都为false时,结果为false,否则true。无论左边是什么,右边都参与运算。
|| (短路或):只要左边为true,则右边就不参与运算。
作者: linder_qzy    时间: 2015-3-7 02:36
z47057554 发表于 2015-3-5 10:40
A&B与A&&B
与运算规则:有一个错就全错,那么问题来了
如果A错,那么可以肯定整个表达式A与B是错的,那我还 ...

说的很好也很清楚 谢谢了哈
作者: linder_qzy    时间: 2015-3-7 02:37
yangruijing 发表于 2015-3-5 10:48
“&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果 ...

十分感谢 说的十分清楚 谢谢了
作者: 执念    时间: 2015-3-7 23:40
上面说的很清楚了:sleepy:
作者: 金康俊    时间: 2015-3-7 23:49
a&b的时候只有a和b同时都是true的情况这个式子才会是true,a&&b也一样。两者之间的不同在于,a&b会先检查a是不是true,然后再检查b是否为true,最终算出结果。而a&&b则不同,如果a是false的话,程序不会再检测后面的b直接得出false。
a|b是只要a和b有一个是true那么式子结果就是true。而a||b结果相同,但运算过程中只要前面的a是true那么后面的b就不会检查了。




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