【发布时间】:2014-05-23 08:33:07
【问题描述】:
我正在使用 avr studio 4 对 ATmega128 进行编程。当我显示浮点值时,我收到警告消息,上面写着
导致出现警告消息的行如下:
float temperature;
//{other parts}
fprintf(stderr,"Temp: %0.2f ", temperature);
警告信息是:
../main.c:128:2: warning: format '%f' expects argument of type 'double', but argument 4 has type 'float' [-Wformat]"
当以双倍显示时,我看到其他随机值..我怎样才能摆脱这个警告消息?
【问题讨论】:
-
请发布一些代码或至少是导致错误的行 (../main.c:128:2) 以及您获得的和您期望的输出值。
-
这有帮助吗? stackoverflow.com/questions/6395726/… -- 我建议明确转换为 double (这与 avr-gcc 中的 float 相同),看看是否有区别。
-
@Rev1.0 - 我已经粘贴了我的代码中的行。使用上面显示的声明时,温度传感器的输出读数与预期的一样,但我收到警告消息,期望双值。我想摆脱这个。
-
@Hanno Binder - 我浏览了你提供的链接。我的理解是,当使用 printf 时,float 参数被转换为 double。由于我不必处理 double 之前我不关心它。但我有一个简单的问题。如果大小无关紧要,我可以在 avr-gcc 中使用 double 而不是 float。 avr-gcc 是否以同样的方式处理 float 和 double ?
-
好吧,无论如何,
temperature都应该被隐式提升为double。 “当以双倍显示时,我看到其他随机值”到底是什么意思。您的意思是当您显式转换为double时,显示的值是错误的?我不明白为什么会这样。