liuziyu_116 2016-02-06 05:53 采纳率: 100%
浏览 4198
已采纳

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

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

  • 写回答

5条回答

  • gonghaiming110 2016-02-07 01:47
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试