C语言问题随记

来源:互联网 发布:软件集成测试需求 编辑:程序博客网 时间:2024/05/21 19:32
  • 变量类型错误导致死循环
for (uint8_t index = 0; index < 512; index++){    RcvBuffer[index] = 0;}

  这段代码的作用在于清除BUFFER区的数据,但是由于uint8_t类型变量的取值范围为0~255for循环的判断条件永远满足,所以这个地方陷入了无限循环,应改为uint16_t类型。

  • 没有进行强制类型转换导致数据溢出
void function( uint16_t para ){    uint32_t temp = 0;    temp = para * 10000;}

  当 para 等于7时,temp 的值不等于70000,而等于70000 - 65536 = 4464;应改为如下代码:

void function( uint16_t para ){    uint32_t temp = 0;    temp = (uint32_t)para * (uint32_t)10000;}
原创粉丝点击