【死记硬背】
&:逻辑与
&&:短路与
|:逻辑或
||:短路或
【答案解析】
&, &&, |, 和 || 运算符有着不同的用途和行为,主要分为逻辑运算符和位运算符两大类:
逻辑运算符
&&(逻辑与):
当用于布尔表达式时,它返回 true 如果两个操作数都为 true。
具有短路求值特性,即如果左边的操作数为 false,则右边的操作数不会被计算,因为结果已经确定为 false。
||(逻辑或):
当用于布尔表达式时,它返回 true 如果至少一个操作数为 true。
同样具有短路求值特性,即如果左边的操作数为 true,则右边的操作数不会被计算,因为结果已经确定为 true。
位运算符
&(按位与):
对两个操作数的每个比特位执行“与”运算。如果两个相应的比特位都是1,则结果中的该位是1;否则,结果中的该位是0。
可以应用于整型数据,包括布尔值(在C++中,布尔值可以转换为整型,其中 true 转换为1,false 转换为0)。
|(按位或):
对两个操作数的每个比特位执行“或”运算。如果两个相应的比特位中至少有一个是1,则结果中的该位是1;否则,结果中的该位是0。
同样可以应用于整型数据,包括布尔值。
使用场景差异
&& 和 || 主要用于条件语句中,如 if, while, 或者 for 循环的条件部分,它们处理的是布尔逻辑。
& 和 | 更多用于处理二进制数据,如掩码操作、权限设置、位标志等场景。
总结
&& 和 || 是用于布尔逻辑的运算符,有短路求值的特性。
& 和 | 是位运算符,用于对整数的二进制位进行操作,没有短路求值的特性。
【温馨提示】
点赞+收藏文章,关注我并私信回复【面试题解析】,即可100%免费领取楼主的所有面试题资料!