开发者社区> 问答> 正文

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

已解决

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

展开
收起
WM云建站 2016-02-15 11:26:40 4743 0
6 条回答
写回答
取消 提交回答
  • 阿里云论坛版主,QQ 1978638808
    采纳回答

    问题一回答:楼主可以搜索下,在任何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作为返回.

    2019-07-17 18:28:48
    赞同 展开评论 打赏
  • 默认return0

    2020-03-19 10:53:15
    赞同 展开评论 打赏
  • 因为不写int main() 那就是void main();函数结束自动return

    2020-03-17 11:06:22
    赞同 展开评论 打赏
  • 专注物联网

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

    2019-07-17 18:28:48
    赞同 展开评论 打赏
  • 软件开发,安全加密

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

    2019-07-17 18:28:48
    赞同 展开评论 打赏
  • 乐于学习与分析

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

    2019-07-17 18:28:48
    赞同 展开评论 打赏
滑动查看更多
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载