【发布时间】:2013-09-13 06:37:42
【问题描述】:
我的代码看起来像
#include <stdio.h>
#include <math.h>
int main (void)
{
float x1, x2, x3;
float y1, y2, y3;
float Cos0, i, j, k, innerProduct;
float Xlength, Ylength;
x1=0;
x2=0;
x3=0;
y1=0;
y2=0;
y3=0;
Cos0=0;
i=0;
j=0;
k=0;
innerProduct=0;
Xlength=0;
Ylength=0;
printf("Please insert six floating point numbers \n");
scanf("%f%f%f%f%f%f", x1, x2, x3, y1, y2, y3);
Xlength=sqrt((x1*x1)+(x2*x2)+(x3*x3));
Ylength=sqrt((y1*y1)+(y2*y2)+(y3*y3));
i=x1+y1;
j=x2+y2;
k=x3+y3;
innerProduct=((x1*y1)*(x2*y2)*(x3*y3));
Cos0=(innerProduct)/((Xlength*Ylength));
return 0;
}
我得到以下编译错误 “警告:格式 %f 需要 'float *' 类型的参数,但参数“x”的类型为 double”
其中 x 是数字之一,scanf 命令中的所有 6 个参数都会发生这种情况,我已将所有变量指定为浮点数,但它不喜欢这样。
我该如何解决这个问题?谢谢!
【问题讨论】:
-
您使用的是哪个编译器?我用 GCC 4.7.2 版试了一下,它编译得很好
-
你需要传递变量的地址而不是变量本身。
-
天啊!抓得好。 :P
-
要获得 GCC 的警告,您需要添加一个标志(
-Wall会这样做)。
标签: c floating-point floating-point-conversion