关于对位操作赋值
今天调试程序的时候遇到一个之前没遇到的问题
首先:
下面是一个结构体,定义的位类型
struct SW_Struct //因为共用体位操作会次序相反 所以这么排序
{
uint8_t sw1_state:1;
uint8_t sw1_defult:1;
uint8_t sw2_state:1;
uint8_t sw2_defult:1;
uint8_t sw3_state:1;
uint8_t sw3_defult:1;
uint8_t sw4_state:1;
uint8_t sw4_defult:1;
uint8_t sw5_state:1;
uint8_t sw5_defult:1;
uint8_t sw6_state:1;
uint8_t sw6_defult:1;
uint8_t sw7_state:1;
uint8_t sw7_defult:1;
uint8_t sw8_state:1;
uint8_t sw8_defult:1;
};
buf[0]=0x0f
m=0x02
sw1_state=buf[0]&m;
调试发现sw1_state=0;
经过请教同事发现 buf[0]&m实际等于0x02;最后一位=0;所以不是我自己理解的大于一就是1;!!!!!

浙公网安备 33010602011771号