shift count is too large


STM8S是8 bit單片機
在STM8S中 unsigned long是32位, unsigned short和unsigned int都是16位,unsigned char是8位。

以以下代碼編譯時報了“shift count is too large”的warning, 並且代碼執行時也沒有達到預期效果:

1 unsigned char temp[4];
2 unsigned long pd_reg;
3 ...
4 pd_reg = temp[3] << 24 | temp[2] << 16 | temp[1] << 8 | temp[0];

后面加上了強制類型轉換解決了此問題:

1 unsigned char temp[4];
2 unsigned long pd_reg;
3 ...
4 pd_reg = (unsigned long)temp[3] << 24 | (unsigned long)temp[2] << 16 | (unsigned long)temp[1] << 8 | (unsigned long)temp[0];

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM