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

之前一直以为&&和&是一样的,最近在看SDWebImage源码的时候看到里面的写法,比较好奇就查了一下,尼玛坑爹啊,还真是不一样的!

&&是逻辑运算符,而&是按位运算符(||和|也一样以下只用&&和&为例),&&前后只用来判断0和非0,只要是非0,都按照1(YES)来看,切&&具有短路效应,即如果&&符号前的对象为0则符号后面的条件就不再判断;而&则不同,&是把符号前后的对象转为二进制,然后按位比较:以6和4为例:6&&4,符号前后都是非0,则返回1;而6&4,6的二进制为110,4的二进制为100,按位比较,则返回的二进制数为100,也就是4。

你可能感兴趣的:(&&和&以及|和||的区别)