c - 为什么这个逻辑/按位运算返回 1?

标签 c logic bit-manipulation boolean-logic conditional-statements

我不明白为什么以下返回 1:

0x0102 && (0xff << 8)

根据我的理解,将 0xff 向左移动八位会导致 0x00;和 anding 任何东西都会导致 0x00。我哪里错了?

最佳答案

(0xff << 8)结果 0xff00 .按位与0x0102将产生 0x0100 (即 true )。

但是,您并没有进行按位与运算。 &&是逻辑与。 &是按位与。你基本上做的是 if 0x0102trueif (0xff << 8)true , 由于参数不为零,结果为 true (转换为 1)。

关于c - 为什么这个逻辑/按位运算返回 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14719902/

相关文章:

转换并计算大写和小写字符

c - MPI_send 和 MPI_receive 函数卡住了

algorithm - 逻辑/算法 - 将列表中的选定项目作为整数存储 - 并再次撤消?

qt - 用于更新属性的 QML 条件逻辑

c - 我不明白为什么 C 中 1 的补码在作用于数字时与作用于存储数字的变量时的行为不同

c++ - 是否有一种无分支方法可以快速找到两个 double 浮点值的最小值/最大值?

c++ - 移位运算符如何影响无符号数

c - winapi - 24bpp 中的 CreateDIBitmap 是 BGR 而不是 RGB

c - 使用信号量的共享内存安全写入

python - 使用上述值简化数据框列部分的有效方法