GCC参数类型错误?

时间:2013-10-13 00:28:48

标签: c gcc arguments

我对此很新,所以我确定这是一个业余的错误。我正在尝试制作一个基本的金融计算器,并在我尝试编译时继续遇到此错误:

findn.c:在函数'main'中: findn.c:36:3:警告:格式'%f'需要'float *'类型的参数,但参数2的类型为'double'[-Wformat] findn.c:50:3:警告:格式'%f'需要类型为'float *'的参数,但参数2的类型为'double'[-Wformat]

据我所知,参数一个浮点类型。是什么赋予了?也可以随意指出其他任何事情,我确信我的代码很草率。

#include <stdio.h>
#include <math.h>

void findN (float PV, float FV, float interest)
{
float iDec = interest / 100;
float onePlusI = iDec + 1;
float leftSide = FV / PV;
float logOne = log(leftSide);
float logTwo = log(onePlusI);
float N = logOne / logTwo;
printf("%f\n", N);
}

void findI (float PV, float FV, float N)
{
float leftSide = FV / PV;
float expN = 1 / N;
float iPlusOne = pow(leftSide, expN);
float iDec = iPlusOne - 1;
float interest = iPlusOne * 100;
printf("%f\n", interest);
}

main ( )
{
int userInput;
printf("Press 1 to find Present Value, 2 to find Future Value, 3 to find Interest, or 4 to find Number of Periods\n");
scanf("%d", &userInput);
if (userInput = 3)
    {
    float Pres3;
    float Fut3;
    float Num3;
    printf("Enter Present Value\n");
    scanf("%f", Pres3);
    printf("Enter Future Value\n");
    scanf("%f", &Fut3);
    printf("Enter the Number of Periods\n");
    scanf("%f", &Num3);
    findN(Pres3, Fut3, Num3);
    }

else if (userInput = 4)
    {
    float Pres4;
    float Fut4;
    float Int4;
    printf("Enter Present Value\n");
    scanf("%f", Pres4);
    printf("Enter Future Value\n");
    scanf("%f", &Fut4);
    printf("Enter interest\n");
    scanf("%f", &Int4);
    findN(Pres4, Fut4, Int4);
    }
}

2 个答案:

答案 0 :(得分:2)

if (userInput = 3)

这是错误的,此处您不再比较值3,而是将值3分配给userInput。使用等于运算符==而不是=赋值运算符。

然后:

scanf("%f", Pres3);

你必须将指针传递给Pres3。使用:

scanf("%f", &Pres3);

代替。

这两个问题在您的计划的其他地方重复出现。

最后,main()不是在C中声明main的有效方式。使用int main(void)

答案 1 :(得分:2)

你写了scanf("%f", Pres3);而不是scanf("%f", &Pres3);。它抱怨这个参数不是指针

floatdouble之间的混淆可能是因为您所在的机器floatdouble相同。