格式参数太多 [-Wformat-extra-args] 和另一个

0 c

double drake_equation(double RofSF, double FSwP, int NofPSL, double PDL, double PwIL, double CwDC, int LofTRS);\n\nint main(int argc, char **argv)\n{\n  double RofSF[] = {1.0, 1.0, 1.5, 3.0};\n  double FSwP[] = {0.2, 0.5, 1.0, 1.0};\n  int NofPSL[] = {1, 5, 3, 5};\n  double PDL[] = {1.0, 1.0, 1.0, 1.0};\n  double PwIL[] = {1.0, 1.0, 0.0001, 1.0};\n  double CwDC[] = {0.1, 0.2, 0.001, 0.1};\n  int LofTRS[] = {1000, 1000000000, 304, 10000000};\n  double N;\n  int i;\n  for (i=1; i< 5; i++)\n  {\n    N = drake_equation(RofSF[i], FSwP[i], NofPSL[i], PDL[i], PwIL[i], CwDC[i], LofTRS[i]);\n  printf("N=%1f", "R*=%1f", "fp=%1f", "ne=%d", "fl=%1f", "fi=%1f", "fc=%1f", "L=%d", N, RofSF[i], FSwP[i], NofPSL[i], PDL[i], PwIL[i], CwDC[i], LofTRS[i]);  \n  }\n  return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

'我已经查看了有关此错误的其他帖子,但我真的不明白我必须对我的代码做什么,我收到错误:

\n

格式的参数太多 [-Wformat-extra-args]\n&\n\xe2\x80\x98%f\xe2\x80\x99 需要 \xe2\x80\x98double\xe2\x80\x99 类型的参数,但参数2 第 18 行的类型为 \xe2\x80\x98char *\xe2\x80\x99\nboth。

\n

关于我需要改变的任何帮助都会很有帮助,谢谢。

\n

Bar*_*mar 6

在您的printf()调用中,您有一个格式字符串"N=%1f",后跟 15 个附加参数。由于格式字符串中只有一个格式化运算符,因此应该只有一个附加参数。这就是“太多的格式争论”试图告诉你的。

第一个参数应该是 a double(或 a ,由于标准促销,float它将升级为),因为这是格式所期望的,但你的第一个参数是一个字符串。这就是“'%f'期望tobe 'double'的参数”试图告诉你的。double%1f

问题是您将格式字符串拆分为 8 个单独的参数。它应该是单个字符串。

  printf("N=%1f, R*=%1f, fp=%1f, ne=%d, fl=%1f, fi=%1f, fc=%1f, L=%d", N, RofSF[i], FSwP[i], NofPSL[i], PDL[i], PwIL[i], CwDC[i], LofTRS[i]);  
Run Code Online (Sandbox Code Playgroud)