关于函数类型冲突的问题

我是 C 的学生,我的函数中的变量类型有问题。这是一个计算资本以及一定跨度内的利率的函数,它表示“capital_a_terme”存在冲突类型。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float capital_initial, taux_interet_fixe, nb_annee_placement;
    printf("Saisir le capital initial.n");
    scanf("%f", &capital_initial);
    printf("Saisir le taux d'interet fixe.n");
    scanf("%f", &taux_interet_fixe);
    printf("Saisir le nombre d'annee de placement.n");
    scanf("%f", &nb_annee_placement);
    printf("le capital a terme vaut : %f.n", capital_a_terme(capital_initial, taux_interet_fixe, nb_annee_placement));
}

float capital_a_terme(float capital_initial, float taux_interet_fixe, float nb_annee_placement)
{
    if (nb_annee_placement == 0)
    {
        return capital_initial;
    }
    else
    {
        return (capital_a_terme(capital_initial + capital_initial * taux_interet_fixe / 100, taux_interet_fixe, nb_annee_placement - 1));
    }
}

回答

如果编译器不知道函数签名,它会将其返回类型默认为int.

正如capital_a_terme在编译器知道它的签名是什么之前使用的那样,它正是这样做的,但是当它到达使用函数的行时,它注意到类型与它认为的不匹配,因此编译失败并且发出错误。

您需要在使用它之前放置函数的原型,在这种情况下,在main

#include <stdio.h>
#include <stdlib.h>

// prototype here, before it's used
float capital_a_terme(float capital_initial, float taux_interet_fixe, float nb_annee_placement);

int main()
{
    float capital_initial, taux_interet_fixe, nb_annee_placement;
    printf("Saisir le capital initial.n");
    //...

或者将实现向上移动到使用它之前,再次使用之前main

#include <stdio.h>
#include <stdlib.h>

// Or the whole function here, before it's used
float capital_a_terme(float capital_initial, float taux_interet_fixe, float nb_annee_placement)
{
    if (nb_annee_placement == 0)
    {
        return capital_initial;
    }
    //... 
}

int main()
{
    float capital_initial, taux_interet_fixe, nb_annee_placement;
    printf("Saisir le capital initial.n");
    //...


以上是关于函数类型冲突的问题的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>