51单片机C语言位移操作的疑问

51单片机C语言移位操作的疑问A:i 0xF91i i1P0 iB:P0 (0xF91)1如上A和B两种方式,为什

51单片机C语言移位操作的疑问
A:
i = 0xF9<<1;
i = i>>1;
P0 = i;

B:
P0 = (0xF9<<1)>>1;

如上A和B两种方式,为什么A可以真正实现移位,而B不可以呢?
[解决办法]
如果编译器够“聪明”,它就不会真的去做 B 中的无效移位。