为什么下面的程序可以正常工作?
int main()
{
int x;
x = foo();
printf("%d",x);
getchar();
return 0;
}
int foo()
{
return 2;
}
而不是这个程序?
//double function(void);
int main(){
double val;
val = function();
printf("%ul\n",val);
}
double function(void){
double num;
num = DBL_MAX;
printf("%ul\n",num);
return num;
}
在我的理解中,这两种情况下的函数定义在
main()
之前都不存在。那么为什么在第一种情况下无论如何都会调用该函数,即使编译器在 main()
之前没有定义它,而在第二种情况下没有? 最佳答案
由于隐式函数声明,编译器默认未指定的类型为 int
。
在第一种情况下恰好是这样,但在第二种情况下则不然。
关于c - 理解 C 中的函数原型(prototype),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30419905/