困惑的代码:意思相同的代码,结果不同?不知道踩到哪个地雷了?
首先是变量的声明:
unsigned char val = 0xFD;
unsigned char temp = 0;
然后是运算的部分:
temp = (val & 0xAA) >> 1 + (val & 0x55) << 1;
将该代码放到IDE中编译测试,在Dev-cpp和VC里面,temp的结果都是0.
如果将上面的运算部分拆除,分为两步走:
temp = (val & 0xAA) >> 1;
temp +=(val & 0x55) << 1;
结果就是0xFE,为正确答案。
究竟我第一部分踩到了什么地雷,导致结果不正常?