为什么下面的程序可以正常工作?

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/

10-11 18:11