我正在编写一个简单的程序来查找第一个'n'整数的阶乘。但是编译时遇到了这个错误。即使认为fact()函数的返回类型为long int,该错误仍然会持续存在。
#include <stdio.h>
#include <stdlib.h>
int main(){
int i;
for(i=0;i<30;i++)
printf("%ld\n", fact(i));
return 0;
}
long int fact(int n){
if(n==0)
return 1;
else
return (long)(n*fact(n-1));
}
错误:
fourth.c:7:3: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘int’ [-Wformat=]
printf("%ld\n", fact(i));
^
fourth.c: At top level:
fourth.c:11:10: error: conflicting types for ‘fact’
long int fact(int n){
^
fourth.c:7:19: note: previous implicit declaration of ‘fact’ was here
printf("%ld\n", fact(i));
^
您忘记了之前包含函数原型main
。包括一个原型
long int fact(int n);
或将函数定义移到之前main
。
#include <stdio.h>
#include <stdlib.h>
long int fact(int n){
if(n==0)
return 1;
else
return (n*fact(n-1));
}
int main(){
int i;
for(i=0;i<30;i++)
printf("%ld\n", fact(i));
return 0;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句