c语言中移位出现的问题,困惑
定义了一个32位的变量。
sourAddr = (msg->identifier&0x0001fe00)>>9;
uart0_putc(sourAddr);//打印的数值时正确的
sourAddr <<= 8;
sourAddr |= (msg->identifier&0x01fe0000)>>17;
uart0_putc(sourAddr);//打印的数值也是正确的
sourAddr <<= 9;
下面见证奇迹:
uart0_putc((uint8_t)sourAddr );//打印出来的是0x00
uart0_putc((uint8_t)(sourAddr>>8 ));//打印出来的是0x00
uart0_putc((uint8_t)(sourAddr>>16) );//打印出来的是0x00
uart0_putc((uint8_t)(sourAddr>>24) );//打印出来的是0x00
为毛啊??困惑的要挂了