关于c语言的int main()的问题 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于c语言的int main()的问题

51干警网 2016-02-15 11:26:40 3200

在int main()中有int,程序最后就要加return 0;书上说函数类型可以省略,此时函数的默认数据类型为int型,但为何在只写main()这样的程序时,后面就可以不加return 0?同时还想问一下return和exit直接有什么区别呢?

c语言int问题 main问题 int问题 c语言int many问题
分享到
取消 提交回答
全部回答(6)
  • 51干警网
    2019-07-17 18:28:48
    已采纳

    问题一回答:楼主可以搜索下,在任何C语言中从来没有哪一种标准是鼓励没有返回值的函数的,也就是void main(),甚至一些国外程序大神是严厉抨击这种void返回类型。 所以在gcc 编译下,无论哪一种标准都是c99,ansi,要么产生
    错误,要么产生警告。
    `
    //filename a.c
    void main(){
    }
    `
    gcc a.c 的输出信息为a.c:7:1:

    warning: return type of 'main' is not 'int' [-Wmain-return-type]
    void main(int argc, const char *argv[])
    
    gcc -ansi a.c`
    
    a.c:7:1: error: 'main' must return 'int'
    void main(int argc, const char *argv[])

    楼主可以看到在ansi标准中对于void返回值直接返回了错误,连编译都通不过。

    至于楼主的疑问应该是来源于微软的vc++,该ide中集成的编译器,已经不是原声的符合标准的c编译器,微软自己做了很多改动,这个你可以网上搜索下。

    问题二:至于exit 则是用来标识应用程序执行状态的,如果直接return 只能说程序执行成功或者不成功,程序中的分支判断则无线显示,exit退出吗只是用来标识
    应用程序到底是以何种状态的,因为应用程序都是要被操作系统加载的,操作系统通过返回码来了解进程的执行细节,这也就是前面的为什么不鼓励用void作为返回.

    0 0
  • 游客x4uu57rrcwjuo
    2020-03-19 10:53:15

    默认return0

    0 0
  • 游客duzwdtzqsaq3i
    2020-03-17 11:06:22

    因为不写int main() 那就是void main();函数结束自动return

    0 0
  • 一生有你llx
    2019-07-17 18:28:48

    不同编译器处理结果不一样

    0 0
  • nothingfinal
    2019-07-17 18:28:48

    不同编译器处理结果不一样

    0 0
  • xumaojun
    2019-07-17 18:28:48

    不同编译器处理结果不一样

    0 0
滑动查看更多
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

相似问题
最新问题