考虑,
#include<stdio.h>
int main()
{
int y = facto(6);
printf("%d",y);
return 0;
}
int facto(int x)
{
if(x==1)
return 1;
else
return x*facto(x-1);
}
我在一些帖子中读过,这些帖子说在定义之前调用一个函数是一个隐式声明。这个陈述如何覆盖(“y = facto(6)”),一个隐含的声明?
在Ubuntu 64位上使用GCC 4.8.1。
答案 0 :(得分:3)
y=facto(6)
是一个隐式声明,因为你告诉编译器&#34;我想调用一个函数并传递一个int,所以在某个地方会有一个函数只有一个int参数。&#34;
如果编译器首先遇到int facto(int x)
,那么这就是显式声明。
隐式声明是危险的,因为编译器不会说&#34;嘿,这与我已经为该功能找到的东西不匹配。&#34;
答案 1 :(得分:2)