面试题:&与&&、|与||的区别?

【死记硬背】

&:逻辑与

&&:短路与

|:逻辑或

||:短路或

【答案解析】

&, &&, |, 和 || 运算符有着不同的用途和行为,主要分为逻辑运算符和位运算符两大类:

逻辑运算符

&&(逻辑与):

当用于布尔表达式时,它返回 true 如果两个操作数都为 true。

具有短路求值特性,即如果左边的操作数为 false,则右边的操作数不会被计算,因为结果已经确定为 false。

||(逻辑或):

当用于布尔表达式时,它返回 true 如果至少一个操作数为 true。

同样具有短路求值特性,即如果左边的操作数为 true,则右边的操作数不会被计算,因为结果已经确定为 true。

位运算符

&(按位与):

对两个操作数的每个比特位执行“与”运算。如果两个相应的比特位都是1,则结果中的该位是1;否则,结果中的该位是0。

可以应用于整型数据,包括布尔值(在C++中,布尔值可以转换为整型,其中 true 转换为1,false 转换为0)。

|(按位或):

对两个操作数的每个比特位执行“或”运算。如果两个相应的比特位中至少有一个是1,则结果中的该位是1;否则,结果中的该位是0。

同样可以应用于整型数据,包括布尔值。

使用场景差异

&& 和 || 主要用于条件语句中,如 if, while, 或者 for 循环的条件部分,它们处理的是布尔逻辑。

& 和 | 更多用于处理二进制数据,如掩码操作、权限设置、位标志等场景。

总结

&& 和 || 是用于布尔逻辑的运算符,有短路求值的特性。

& 和 | 是位运算符,用于对整数的二进制位进行操作,没有短路求值的特性。

【温馨提示】

点赞+收藏文章,关注我并私信回复【面试题解析】,即可100%免费领取楼主的所有面试题资料!

原文链接:,转发请注明来源!