在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#的问题:自动化测试