1

在阅读 K&R 第 2 版时,我注意到程序总是以“main(){”开头。我一直认为 main() 在它之前必须有 int 或 void 。所以它看起来像“int main()”或“void main()”。什么是“main()”,有什么区别?

4

3 回答 3

8

main()是旧的 K&R 样式,如果未指定int,则返回类型默认为省略int(您应该指定它)。此外,空括号采用 K&R 样式,表明它不带参数。在 C99 中,现在应该void这样表示。空括号意味着该函数将接受任意数量的任何类型的参数,这显然不是您想要的。所以最终的结果是:

int main(void) { ... }

main()应该返回int.. 约定说return 0;最后的语句将有助于向调用者指示程序已成功执行 - 非 0 返回值表示异常终止。

对您的问题更直接的答案是main() { ... }可行,因为它没有错。编译器看到没有为main函数声明返回类型,所以它默认为int. 空括号表明它main接受任意数量的任何类型的参数,这也没有错。但是,要符合 C99 样式/标准,请使用

int main(void) { ... }
于 2012-06-16T22:20:43.130 回答
0

因为旧版本的 c 支持这一点。

main()

相当于

int main()
于 2012-06-16T22:24:03.940 回答
-4

大多数时候语法取决于编译器。例如,当您使用 Visual c++ 时,您编写“void main”,但当您使用 GCC 时,您应该编写“int main()”,然后如果程序完成好或坏,则返回 0 或 1。

于 2012-06-16T22:23:10.587 回答