#include <stdio.h>
#include <stdlib.h>
#define size 7
int main()
{
//分步运算
unsigned char a=1;
a=(a<<size);
printf("a=%2x\n",a);
a=~a;
printf("a=%2x\n",a);
a=a>>size;
printf("a=%2x\n",a);
//合在一起运算,问题就来了,答案不一样
unsigned char t=1;
t=((~(t<<size))>>size);
printf("a=%2x\n",t);
return 0;
}
结果如下
解答在知乎里:http://www.zhihu.com/question/27745434
原来是整数提示这个坑。。。