我不明白为什么以下返回 1:
0x0102 && (0xff << 8)
根据我的理解,将 0xff
向左移动八位会导致 0x00
;和 anding
任何东西都会导致 0x00。我哪里错了?
最佳答案
(0xff << 8)
结果 0xff00
.按位与0x0102
将产生 0x0100
(即 true
)。
但是,您并没有进行按位与运算。 &&
是逻辑与。 &
是按位与。你基本上做的是 if 0x0102
是true
和 if (0xff << 8)
是true
, 由于参数不为零,结果为 true
(转换为 1)。
关于c - 为什么这个逻辑/按位运算返回 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14719902/