我试图返回一个浮点值并将其分配给一个浮点变量,但新浮点值与返回的值不同。
float getVoltageReading() {
return 1.2f;
}
void updateUIReadings(uint8_t menuID) {
float integerReading = getVoltageReading(); // digital voltage
}
在调试器中我看到 getVoltageReading 返回1.2
,但整数读数被分配为1.06703091e+009
这是为什么?
您正在呼叫getVoltageReading
作用域内没有活动原型的函数,这意味着它假设它将返回一个int
. It looks就像,从你的问题的组织方式来看,它在范围内,但我可以向你保证它不是。
您可以看到以下两个文件,testprog1.c
:
#include <stdio.h>
//float getVoltageReading(void);
int main(void) {
float integerReading = getVoltageReading ();
printf("%e\n", integerReading);
return 0;
}
and testprog2.c
:
float getVoltageReading(void) {
return 1.2f;
}
当它们被编译并链接在一起时,输出是:
1.067031e+09
因为从返回的浮点值getVoltageReading()
被解释为int
。如果您取消注释原型testprog1.c
,它工作得很好,因为它将浮点值解释为float
:
1.200000e+00
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)