8位單片機(jī)中一個(gè)容易被忽視的溢出問題
例:
本文引用地址:http://m.butianyuan.cn/article/201611/318554.htmuint16 wTmp ;
uint8 x ;
x=2;
wTmp = (uint16)(x*150);
各位,以上這個(gè)乘法有沒有問題?wTmp的值是多少?
相信有很多人都會(huì)不加思考的說,沒問題?。Tmp=300 。
好,問題來了!告訴你,其實(shí)結(jié)果是 wTmp=44。
這里不作具體解釋,請(qǐng)讀者自已思考,下次在遇到類似此情況
的時(shí)候千萬有小心!
正確寫法:
x=2;
wTmp = (uint16)(x)*150; //wTmp=300
評(píng)論