目录
1.“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
例:
![](https://img-blog.csdnimg.cn/936c24fea4fb4549af6da65d949860e7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc291dCgi5LiA5Liq56CB5YacIik=,size_11,color_FFFFFF,t_70,g_se,x_16)
看运行结果:
可见 : 一模一样的表达式 &&并没有执行右边的运算,而&两边都执行了
我们知道,上面的a==b,c==d结果都是false , 对于& 运算, 只要 & 左边是false 那么整个表达式都是false的,所以 && 知道第一个表达式为false时就不会去执行后面的表达式了
但 && 左边如果是true就会接着执行,这就是短路与
2. | 和 || 的区别
单 | 时,左边无论真假,右边都进行运算;
双 || 时,如果左边为假,右边参与运算,如果左边为真,那么右边不参与运算
例 :
运行结果:
由结果可见 : a==b,c==d是恒成立的
所以 || 并没有去执行右边的表达式,而 | 两边都执行了
同理 || 左边如果是 false 那么两边都会执行,直到找到一个true,这就是短路与