我在下面的代码段中的~
如何在C中工作时遇到问题:
#include <stdio.h>
int main()
{
unsigned char x[256];
int i = 0;
for(i=0; i<256; i++)
x[i] = i;
unsigned char index = 1;
unsigned char y = 0;
//Case 1
y = x[~index];
printf("%u\n", y);
//Output: 0
//Case 2
y = x[(unsigned char) ~index];
printf("%u\n", y);
//Output: 254
//Case 3
y = x[index ^ 0xFF];
printf("%u\n", y);
//Output: 254
return 0;
}
案例1 案例2 案例2 案例3 时,案例1 不会返回正确的结果。在我看来,~index
被解释为 int 而不是 char 。这样就可以了,但是我不明白为什么 unsigned char 在按位期间得到一个扩展名。
编译使用:gcc版本4.8.2(Ubuntu 4.8.2-19ubuntu1)