我可以在 C 中使用按位运算符而不是条件运算符吗?

Can I use bitwise operators instead of conditional operators in C?

我可以使用&和|吗?而不是 && 和 ||在 C 语言家族中?这当然不适用于对象。有什么区别吗?如果没有,那么为什么存在条件运算符?

例如:

if (3 && 5) // true
if (3 & 5) // also true

正如评论中指出的那样:

1 && 2 is true, 1 & 2 is false.

此外,

Bitwise operators don't short-circuit.

if (3 & 5) // also true

是因为按位 & 的结果是 1

使用 8 位:

0b00000101 &
0b00000011
------------
0b00000001

但是什么if ( 2 & 5 )

0b00000010 &
0b00000101
------------
0b00000000

所以是 falseif ( 2 && 5) 仍然是 true;

逻辑运算符和位运算符有很大的不同。逻辑运算符 return 一个布尔值(0 或 1),而位运算符 return 一个基于逐位应用该位运算符的整数。示例:15 & 8 = 8,而 15 && 8 = 1。从语法上讲,您可以使用按位运算符代替逻辑运算符,但从语义上讲这是错误的。