我本以为下面的代码会输出10
,因为 (~port)
等于 10100101
。
所以,当我们将其右移 4
位时,我们得到了 00001010
,也就是 10
。
但是结果却是 250
!为什么呢?
int main()
{
uint8_t port = 0x5a;
uint8_t result_8 = (~port) >> 4;
//result_8 = result_8 >> 4;
printf("%i", result_8);
return 0;
}
uint8_t
,还支持unsigned char
,因为我也用unsigned char
测试过,并得到了相同的结果!我是对的吗? - Islam Abdeenuint8_t
很可能是unsigned char
的同义词。提升规则适用于所有小于int
的整数类型。 - Yakov Galkaresult = (port ^ 0xFF) >> 4;
。 - Nayuki