在C语言中,我经常看到这样形式的if
语句:
#define STATUS 0x000A
UINT16 InterruptStatus;
if (InterruptStatus & STATUS)
{
<do something here....>
}
如果我有这个声明,它在处理时间上会有什么不同或者这不是首选/替代方式的任何其他原因吗?
#define STATUS 0x000A
UINT16 InterruptStatus;
if (InterruptStatus == STATUS)
{
<do something here....>
}
最佳答案
嗯,它们不相同。
如果是 bitwise AND ,操作数的两个不同值可以产生true
,而对于equality , 两者必须相同。
将十进制值 5
和 3
视为操作数。
- 按位与将为条件检查生成 TRUE 值(
5 & 3 == 1
)。 - 相等将产生 FALSE 值(
5 ==3 ==> false
)
所以它们不是替代品,真的。
按位运算广泛用于检查标志变量的特定位是“设置”还是“未设置”。
关于c - 相等运算符与按位 AND 运算符的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42479651/