K&R样式函数定义中的语法错误,为什么?

alc*_*raz -2 c syntax

#include <stdio.h>
long int faktorijal(n);
int n;
{
if (n==0)
return((long)1);
else
return(n*faktorijal(n-1)); // Recursive call
}
main()
{
int i;
for (i=0;i<=5;i++)
printf("%d! = %d\n",i,faktorijal(i));
getch();
}
Run Code Online (Sandbox Code Playgroud)

给我一个错误"[错误]预期标识符''('''''''''''''''''''''''''

我认为这与主要功能有关,但我不确定,所以我在这里问.

faktorijal意味着阶乘

编辑:只是去展示错误的书籍.这是一本较旧的书,但我们也被教导使用getch()代替getchar或返回0.

谢谢大家,这帮了很多忙.

Nat*_*tta 7

你正在使用K&R风格.在这种情况下

 long int faktorijal(n);
 int n;
Run Code Online (Sandbox Code Playgroud)

;函数签名错误后的尾随.删除它.

之后,

  • faktorijal()返回a long int,但是你提供的返回值作为参数%d再次出错.你需要使用%ld它.
  • getch()不是标准的库函数,getchar()而是使用.
  • 对于托管环境,至少符合main()C标准(最新,如果你认为)的符合签名int main(void).隐式int规则已从标准中明确删除.