gpt4 book ai didi

c - 格式 '%lf' 需要类型为 'double' 的参数,但参数 2 的类型为 'double *'

转载 作者:行者123 更新时间:2023-11-30 18:45:18 24 4
gpt4 key购买 nike

我尝试过搜索此错误代码,但我是 C 语言新手,而且答案并没有真正让我明白。如果有人能指出我出错的地方,因为当我打印出 do while 循环内的任何值时,它给出的值为 0,我将不胜感激。谢谢!

initial_x_pos = 300;
initial_y_pos = 800;
x_pos = initial_x_pos;
y_pos = initial_y_pos;

gravity = 1.62;

position = sqrt(pow(x_pos, 2) + pow(x_pos, 2));
influence = 3.14 * 50 * 50;

GFX_SetColour(WHITE);

GFX_MoveTo(initial_x_pos, initial_y_pos);

do {
time += 1;
y_pos = initial_y_pos - (vel_y * time) / 2;
x_pos = initial_x_pos + (vel_x * time) / 2;
GFX_DrawLineTo(x_pos, y_pos, 3);
GFX_UpdateDisplay();
distance = sqrt(pow(y_pos - (y + 312), 2) + (pow(x_pos - (x+440), 2)));
printf("%lf\n", &distance);
printf("%lf\n", &vel_x);
} while (vel_x != 10000000000);

最佳答案

printf 中的转换说明符 %f 会忽略 l 修饰符,它需要一个 double 值。当传递给 printf 或任何其他可变函数时,float 参数会自动转换为 double

您没有将完整的代码发布到函数中,distance 变量的类型未知,但通过 &distance 传递其地址总是错误的。您可能已经复制了通过 scanf() 读取它的代码,其中 double 类型需要 %lf 并且目标地址必须获得通过。

这是更正后的版本:

int time = 0;
double distance;
double initial_x_pos = 300;
double initial_y_pos = 800;
double x_pos = initial_x_pos;
double y_pos = initial_y_pos;

double gravity = 1.62;

double position = sqrt(pow(x_pos, 2) + pow(y_pos, 2));
double influence = 3.14 * 50 * 50;

GFX_SetColour(WHITE);

GFX_MoveTo(initial_x_pos, initial_y_pos);

do {
time += 1;
y_pos = initial_y_pos - (vel_y * time) / 2;
x_pos = initial_x_pos + (vel_x * time) / 2;
GFX_DrawLineTo(x_pos, y_pos, 3);
GFX_UpdateDisplay();
distance = sqrt(pow(y_pos - (y + 312), 2) + (pow(x_pos - (x + 440), 2)));
printf("%f\n", distance);
printf("%f\n", vel_x);
} while (vel_x != 10000000000);

但请注意,vel_x 在循环中不会被修改,并且不鼓励将 double 值与 == 进行比较,因为浮点计算具有精度有限。

关于c - 格式 '%lf' 需要类型为 'double' 的参数,但参数 2 的类型为 'double *',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55080571/

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