一个未初始化的局部变量引起的BUG(一)

1. 现象

求ADC平均值时,在特殊情况下会异常。

2. 分析

2.1

如下图,仿真发现,是由于sum_val局部变量未初始化引起,其值被默认初值为6000,等于多加了6000的数值。
一个未初始化的局部变量引起的BUG(一)_第1张图片

一个未初始化的局部变量引起的BUG(一)_第2张图片

2.2

经调试发现,GetBackKey(Back_key_auto);在调用CheckBatteryValue(Get_Adc_Average(5));后,才出现异常。sum_val局部变量被默认初值6000则来自Get_Adc_Average(5)的返回值。

一个未初始化的局部变量引起的BUG(一)_第3张图片

3. 解决办法

将sum_val局部变量初始化为0即可

4. 总结

在定义局部变量时,尽量初始化局变量,以预防不可预知的BUG。

你可能感兴趣的:(C/C++,MCU,c语言,单片机)