C中,如果中间结果超出了左边接收数据的变量类型范围或者接近这个范围,也可能会导致溢出

在一次C51中,我定义了

NTC_Res 和voltage都是unsigned int 型变量,并且此时voltage等于3823,

NTC_Res = Voltage * 10000 / (5000 - Voltage);   

NTC_Res 理论上期望结果是32480,但是我却输出22,然后我一直检查了很多地方,废了很多时间,然后发现是中间结果数据溢出的原因。

解决方法:

1、将voltage定义为long类型;

2、将中间值“分段”,别一下太大,如这样就可以:NTC_Res = (Voltage /100.0 * 100 * 100 / (5000 - Voltage)) * 100;

 

// ------------------------分 隔 符---------------------------

 

点击参考1

点击参考2

posted @ 2024-12-09 23:00  iZJ"Qq4577105  阅读(2)  评论(0编辑  收藏  举报