gpt4 book ai didi

无法获取类型为 'float' 的右值的地址

转载 作者:行者123 更新时间:2023-11-30 14:53:56 25 4
gpt4 key购买 nike

所以我是编码新手,并尝试用 C 编写一个程序,在其中输入一个浮点值,它返回表示该值所需的最小硬币数量。但我不断收到此错误消息:

c:16:19: error: cannot take the address of an rvalue of type '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;
}

最佳答案

我对 C 很生疏,但我认为正在发生的事情。有左值和右值。

int a = 5;

在这一行中,a 是左值,5 是右值。您只能获取左值的地址,而不能获取右值的地址。当您调用 change(f) 时,您会获得自己的右值,然后您可以将其分配给左值,例如

float ff = change(f);

现在您可以获取ff的地址。因此,要么尝试按照@mco的建议进行操作(如果您想打印实际值),要么如果您确实想要地址,请执行类似的操作

float ff = change(f);
printf("%i", &ff);

我将 %f 更改为 %i 因为将地址打印为 float 没有什么意义。

关于无法获取类型为 'float' 的右值的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46975298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com