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

我可以在C中使用位运算符而不是条件运算符吗?,c,syntax,bitwise-operators,conditional-operator,C,Syntax,Bitwise Operators,Conditional Operator,我可以在C语言家族中使用&和|而不是&&和| |吗?当然,这对对象不起作用。有什么区别吗?如果没有,那么为什么条件运算符存在 例如: if (3 && 5) // true if (3 & 5) // also true 正如评论中指出的那样: 1和2为真,1和2为假 而且 位运算符不会短路 正如评论中指出的那样: 1和2为真,1和2为假 而且 位运算符不会短路 是,因为按位&的结果是1 使用8位: 0b00000101 & 0b00000011 -------

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

例如:

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

正如评论中指出的那样:

1和2为真,1和2为假

而且


位运算符不会短路


正如评论中指出的那样:

1和2为真,1和2为假

而且


位运算符不会短路

是,因为按位&的结果是1

使用8位:

0b00000101 &
0b00000011
------------
0b00000001
但是如果2和5呢

因此,如果2&&5仍然为真,则为假

是,因为按位&的结果是1

使用8位:

0b00000101 &
0b00000011
------------
0b00000001
但是如果2和5呢



因此,如果2&&5仍然为真,则为假

逻辑运算符和按位运算符完全不同。逻辑运算符返回布尔值0或1,而位运算符基于逐位应用该位运算符返回整数。示例:15&8=8,而15&8=1。在语法上你可以用位运算符代替逻辑运算符,但在语义上它是错误的

逻辑运算符和按位运算符完全不同。逻辑运算符返回布尔值0或1,而位运算符基于逐位应用该位运算符返回整数。示例:15&8=8,而15&8=1。在语法上你可以用位运算符代替逻辑运算符,但在语义上它是错误的

位运算符不会短路。位运算符和逻辑运算符不同。你是什么意思?显示一些示例短电路是一个很大的差异。1&&2为真,1&2为假-&运算符和(&&O)运算符之间有很大的差异。例如:0x01和0x10为0,0x01和0x10为1。按位运算符不会短路。按位运算符和逻辑运算符不同。你是什么意思?显示一些示例短电路是一个很大的差异。1&&2为真,1&2为假-&运算符和(&&O)运算符之间有很大的差异。例如:0x01&0x10是0,0x01&0x10是1。C关键字既不是真的,也不是假的。@AndrewHenle:这就是为什么它们在我的答案中不会以固定字体出现的原因。WT。。。我第一次看到维基的答案。怎么做?@LPs:答案文本框右下角有一个复选标记。您不会从答案中获得rep,但会将其打开供所有人编辑。@AndrewHenle:很久以来,我们一直使用true作为C中不等于0的事物的通俗同义词,因为没有更明确含义的true关键字。。。当然,现在有了将宏定义为真1…C关键字既不是真的,也不是假的。@AndrewHenle:这就是为什么它们在我的答案中没有固定字体出现的原因。WT。。。我第一次看到维基的答案。怎么做?@LPs:答案文本框右下角有一个复选标记。您不会从答案中获得rep,但会将其打开供所有人编辑。@AndrewHenle:很久以来,我们一直使用true作为C中不等于0的事物的通俗同义词,因为没有更明确含义的true关键字。。。当然,现在有定义宏真1。。。
0b00000010 &
0b00000101
------------
0b00000000