为什么函数在没有指定返回类型时返回值?

时间:2017-02-03 10:11:38

标签: c function return return-value return-type

fun(int x) {
    if(x<=0) return 1; 
    return fun(x-1)+x;
}

void main() 
{
     int a = fun(7);
     printf(" %d",a);
     getch();
}

我在此函数C中有fun这个简单的代码返回值,但我没有指定任何返回类型。据我所知,默认的返回类型是void

2 个答案:

答案 0 :(得分:2)

没有任何名为 deafult return type ,在这种情况下,返回类型已被省略,编译器已选择将其视为int注意

TL; DR 根据最新的C标准,这是无效代码。

引用C99前言,第7页

  

第二版的主要变化包括:

     
      
  • ...

  •   
  • - 删除隐式int

  •   

也就是说,标准还规定,对于托管环境,main()的签名至少应为int main(void)

注:

Pre C-99允许省略类型默认为int,并且一些编译器可能仍然支持它以保持与遗留代码的兼容性。请勿依赖或尝试使用此功能

答案 1 :(得分:1)

C语言中,默认情况下,return类型的函数为int。如果您不从这些函数返回int(没有显式返回类型),则行为未定义。