我正在查看一些包含此语句的 C 代码。
if (
((uint8_t *)row)[byte] & (1 << (8-bit))
)
value |= (value + 1);
将指针和整数的 AND 放在条件括号内的含义和目的是什么?
最佳答案
在其他上下文中是有含义的,但这里不是这样的。
它将row
(我假设是某种指针)转换为uint8_t *
,然后挑选出byte
-该数组中的第 uint8_t
。然后将其与左移内容进行按位与运算。
逻辑上与以下内容相同:
uint8_t shifted = (1 << (8 - bit))
uint8_t *rowptr = (uint8_t *)row;
uint8_t rowval = rowptr[byte];
uint8_t combined = (rowval & shifted);
if (combined) // or, if (combined != 0)
value |= (value + 1);
关于c - If 条件包含指针和整数的 AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21537627/