c - 相等运算符与按位 AND 运算符的用法

标签 c equality bitwise-and

在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 , 两者必须相同。

将十进制值 53 视为操作数。

  • 按位与将为条件检查生成 TRUE 值(5 & 3 == 1)。
  • 相等将产生 FALSE 值(5 ==3 ==> false)

所以它们不是替代品,真的。

按位运算广泛用于检查标志变量的特定位是“设置”还是“未设置”。

关于c - 相等运算符与按位 AND 运算符的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42479651/

相关文章:

c - 在关闭的连接上写入不会立即生成 sigpipe

c++ - 将字符串拆分为 3d 数组

php - 字符串比较的行为不同

ruby - 如何在 Ruby 中按位与两个位字符串?

c - 按位移位与十六进制值的 AND 运算之间的差异

c - i386-elf-gcc 输出关于 "static a = 0"的奇怪汇编命令

c++ - 在单个 header 中定义全局(外部)变量更好,还是在各自的头文件中定义更好?

javascript - 我如何检查一个对象是否在我的数组中?

flutter - 如何比较 Dart 中的文件/流平等

c# - 将按位比较从 C++ 转换为 C#