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