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

 

相关文章:

  • 2021-08-19
  • 2021-11-25
  • 2022-12-23
  • 2022-12-23
  • 2018-04-02
  • 2021-12-01
  • 2021-06-20
猜你喜欢
  • 2022-12-23
  • 2021-09-18
  • 2021-06-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案