stm32编程经验总结——常犯错误

(一)运算符优先级

例子:

temp_qianjin_force=(temp_qianjin_force<<8)+updata[firstloc][secondloc][3];

temp_qianjin_force=temp_qianjin_force<<8+updata[firstloc][secondloc][3];

分析:上面两个算式仅有括号的不同,但运算结果却天差低别,真实意图是先移位,再相加。所以该加的括号一定加上

(二)16进制转换为带符号10进制

很多情况下,我们都是使用uint8_t表示无符号8位数,但当需要传递负数的时候,数的最高位表示数的正负,1为负,0为正。所以需要把16进制转换为带符号10进制。

例子:

float aa=((short)a<<8)+b;

 

 

 

你可能感兴趣的:(控制算法,stm32,c)