C 为什么我把a系列声明为浮点时它是int?

C 为什么我把a系列声明为浮点时它是int?,c,C,给定x和项数。 显示系列[1+x+x^2/2!+x^3/3!+..]的总和 我试过使用float,double类型。 我对整数使用了强制转换。 我试过很多东西 #include <stdio.h> #include <math.h> int main() { int termos; float series, x, fact;//I have tried it with double because of pow //function

给定x和项数。 显示系列[1+x+x^2/2!+x^3/3!+..]的总和

我试过使用float,double类型。 我对整数使用了强制转换。 我试过很多东西

#include <stdio.h>
#include <math.h>
int main()
{
int termos;
float series, x, fact;//I have tried it with double because of pow 
                 //function


printf("Input x:"); scanf("%f",&x);
printf("\nInput nº termos:"); scanf("%d",&termos);

for(int i=1,series=1;i<termos;i++)
{
      for(int k=1,fact=1;k<=i;k++)
      {
        fact=fact*(float)k;
        //printf("fact=%f ",fact);
    }

 series= series + pow(x,i)/fact;
 printf("%f.....", series);//line 29

  }
    printf("\n\nFinal:%f \n", series);

return 0;
 }
c:29:23:警告:格式指定类型“double”,但参数的类型为“int” [-Wformat]
printf%f…,系列

这条线:forint i=1,series=1;这条线:forint i=1,series=1;i您正在声明一个带有


您应该始终使用-Wall编译代码以捕获此类错误

您正在声明一个带有


您应该始终使用-Wall编译代码以捕获此类错误

谢谢你的纠正和额外的建议。再次感谢。将赋值置于循环之前比将i的声明置于循环之前更好,因为后者不必要地扩大了i的范围。感谢您的更正和额外建议。再次感谢您。将赋值置于循环之前比将i的声明移至循环之前更好,因为后者不必要地扩大了i的范围。您还需要使用scanf验证输入读取。您还需要使用scanf验证输入读取。
series = 1;
for(int i=1;i<termos;i++)
for(int i=1,series=1;i<termos;i++)
series = 1;
for(int i=1;i<termos;i++)