为什么main()不需要返回类型(比如int),即使它返回一个intiger?

时间:2014-02-12 16:34:10

标签: c return return-type

#include<stdio.h>
main()
{
 //
 //
return 0;
}

我的意思是,即使我没有指定它的返回类型,上面的代码也没有显示任何错误。 (简单地说是'main'而不是'int main')。

4 个答案:

答案 0 :(得分:4)

这是旧式语法(前C89),其中函数的默认返回类型为int

AFAIK它现在已被弃用,所以你应该总是提供一个返回类型。

答案 1 :(得分:2)

5.1.2.2.1程序启动

  

程序启动时调用的函数名为main。实施宣布否   这个功能的原型。 应使用int 的返回类型进行定义,但不能   参数:

 int main(void) { /* ... */ }
     

或有两个参数(这里称为argc和argv,但可能有任何名称   使用,因为它们是声明它们的函数的本地函数):

int main(int argc, char *argv[]) { /* ... */ }
     

或等同物; 10)或以某种其他实现定义的方式。

编译它没有返回类型,编译器应该发出警告:

[Warning] return type defaults to 'int' [enabled by default]

答案 2 :(得分:1)

自1989/1990 C标准起,未指定返回类型的函数将隐式返回int

从1999 C标准开始,已删除“隐式int”规则,并且必须使用显式返回类型。 (编制者可能不会拒绝违反此规则的程序;通常他们只会发出警告;您仍应纠正它。)

即使您使用的是C99之前的编译器,仍应指定返回类型。

main函数正确定义为:

int main(void) { /* ... */ }

int main(int argc, char *argv[]) { /* ... */ }

或等效(或以其他一些实现定义的方式,但很少有充分的理由使用除这两种形式之外的任何其他形式)。

(是的,你应该使用(void)而不是()。是的,main的返回类型是int,而不是void,尽管有些允许它出于某种原因。)

答案 3 :(得分:-2)

由于向下兼容性,我们在程序中使用int main()。我认为int main()main()之间没有太大区别。 main()在一些较旧的编译器中很有用。现在,我们应该在main()函数之前使用返回类型。