A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© linder_qzy 中级黑马   /  2015-3-5 10:13  /  1194 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


问下&和&&以及|和||的区别

评分

参与人数 1黑马币 +2 收起 理由
万合天宜 + 2 加油~

查看全部评分

8 个回复

倒序浏览
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了,直接返回假,比上面那个高效

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
“&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
z47057554 发表于 2015-3-5 10:40
A&B与A&&B
与运算规则:有一个错就全错,那么问题来了
如果A错,那么可以肯定整个表达式A与B是错的,那我还 ...

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

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

说的很好也很清楚 谢谢了哈
回复 使用道具 举报
yangruijing 发表于 2015-3-5 10:48
“&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果 ...

十分感谢 说的十分清楚 谢谢了
回复 使用道具 举报
上面说的很清楚了:sleepy:
回复 使用道具 举报
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就不会检查了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马