C语言中运算符优先级运用注意事项
今天在调试中C语言程序中,出现一个问题,给一个结构体元素赋值,不能出现想要的数据,
RFID_date.term_of_validity[0] = (uint16)(databuf[0]|databuf[1]<<8-2000),本来算出来的应该是20,
算出来的值为228,单独拿出databuf[0]|databuf[1]<<8,2000,又正常,查看C语言中运算符优先级,
发现原来是 - 的优先级大与<<优先级和|,所以databuf[1]<<8完后,先减去2000,再与databuf[0]相或,
由此算出异常值,基础不扎实太容易出错,
有一个办法,碰到这种不确定优先级的,先用括号括起来,把确定要计算的先计算出来,就不会出现这个问题。

浙公网安备 33010602011771号