【发布时间】:2017-10-27 12:41:09
【问题描述】:
所以我是编码新手,并尝试用 C 语言编写程序,我在其中输入一个浮点值,它返回表示该值所需的最小硬币数。但我不断收到此错误消息:
c:16:19: 错误:无法获取类型为“float”的右值的地址
printf("%f", &change(f));
#include <stdio.h>
#include <cs50.h>
float change(float n);
int main(void) {
float f;
do {
f = get_float();
} while (f < 0);
change(f);
printf("%f", &change(f));
}
float change(float n) {
float pennies = 0.01;
float nickles = 0.05;
float dimes = 0.1;
float quarters = 0.25;
float coins = 0;
do {
n = n - quarters;
coins++;
} while (n >= quarters);
do {
n = n - dimes;
coins++;
} while (n >= dimes);
do {
n = n - nickles;
coins++;
} while (n >= nickles);
do {
n = n - pennies;
coins++;
} while (n != 0);
return coins;
}
【问题讨论】:
-
为什么你甚至想要在那个例子中传递指针?您的
printf函数不期望那里有一个指针。 -
我投票决定关闭它,因为它是由一个简单的印刷错误引起的,或者只是对该语言的基础研究还远远不够,这两者都没有为未来的读者创造一个有用的线索。
-
printf ("%f", &change(f));尝试将change()返回的值的地址打印为浮点数(因为它是右值,所以不能)。您只想打印函数结果的值:printf ("%f", change(f));这使得之前对change(f);的调用变得不必要了。 -
欢迎来到本站!查看tour 和how-to-ask page 了解更多关于提出问题以吸引高质量答案的信息。如果评论者询问,您也可以edit your question 提供更多信息。我同意@JohnnyMopp。
-
旁白:请阅读Why not use Double or Float to represent currency? 虽然这是一个 java 问题,但公认的答案是 这个问题不仅适用于 Java,它适用于任何使用本机浮点类型的编程语言.