关于函数类型冲突的问题
我是 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");
//...