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];