具体遇到的问题如下:
假设有一个函数(函数原型为unsigned char test(void);),然后假设调用此函数的返回值是0xFF,然后执行如下语句:
temp=(test()<<4)>>4;
预期的结果应该是temp=0x0F,但实际上我得到的结果是0xFF(视编译器优化级别的不同可能不一定是这个值)
预期的结果应该是temp=0x0F,但实际上我得到的结果是0xFF(视编译器优化级别的不同可能不一定是这个值)
那么如何才能得到预期的结果呢,建议采用以下语句来实现:
temp=test();
temp<<=4;
temp<<=4;
temp>>=4;