我今天尝试反转数组元素,但没有用。是否有原因,例如

uint8_t array[2] = {0xFF,0x0A};
...
if( 0xF5 == ~(array[1]){
   // never got here
}

不行吗编译器未显示任何错误。

最佳答案

if(0xF5 == ~(array[1]))

发生这种情况是因为在将反转应用到array[1]之前,它已提升为int。因此,当您对array[1]的提升值应用反转时,您将获得:0xFFFFFFF5,不等于0x000000F5

如前所述,如果您想进行比较,可以将等式运算符右侧的表达式转换为uint8_t

关于c - 反转数组元素(按位)不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33877484/

10-10 01:03
查看更多