1

我正在尝试返回一个浮点值并将其分配给一个浮点变量,但新浮点的值与返回的不同。

float getVoltageReading() {
    return 1.2f;
}


void updateUIReadings(uint8_t menuID) {
    float integerReading = getVoltageReading(); // digital voltage
}

在调试器中,我看到 getVoltageReading 返回1.2,但 integerReading 被分配为1.06703091e+009

这是为什么?

4

1 回答 1

0

getVoltageReading在范围内没有活动原型的情况下调用该函数,这意味着它假设它将返回一个int. 从您的问题的组织方式来看,它似乎在范围内,但我可以向您保证不是。

您可以通过以下两个文件看到testprog1.c

#include <stdio.h>

//float getVoltageReading(void);

int main(void) {
    float integerReading = getVoltageReading ();
    printf("%e\n", integerReading);
    return 0;
}

testprog2.c

float getVoltageReading(void) {
    return 1.2f;
}

当这些被编译并链接在一起时,输出是:

1.067031e+09

因为从中返回的浮点值getVoltageReading()被解释为int. 如果您在 中取消注释原型testprog1.c,它可以正常工作,因为它将浮点值解释为float

1.200000e+00
于 2013-05-28T08:49:30.863 回答