免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7729 | 回复: 2
打印 上一主题 下一主题

[C] main函数返回值的作用,void和int的区别 [复制链接]

论坛徽章:
17
处女座
日期:2013-08-27 09:59:352015亚冠之柏太阳神
日期:2015-07-30 10:16:402015亚冠之萨济拖拉机
日期:2015-07-29 18:58:182015年亚洲杯之巴勒斯坦
日期:2015-03-06 17:38:17摩羯座
日期:2014-12-11 21:31:34戌狗
日期:2014-07-20 20:57:32子鼠
日期:2014-05-15 16:25:21亥猪
日期:2014-02-11 17:32:05丑牛
日期:2014-01-20 15:45:51丑牛
日期:2013-10-22 11:12:56双子座
日期:2013-10-18 16:28:17白羊座
日期:2013-10-18 10:50:45
1 [报告]
发表于 2013-10-23 14:34 |显示全部楼层
回复 1# 511244213


    main函数的返回值就是运行其程序的这个进程的状态码,命令行程序常常通过判断相应命令(进程)的状态码来判断相应命令是结果是否正常,VC++是允许void main这种形式的程序入口原型的,之所以允许这么做是有历史原因的,在最初的K&R C中main函数的原型为:main(),没有对返回值和参数做出明确规定,为此存在不同main函数原型扩展。K&R C第二版开始对此做出了更细致的规定,除了main()这样的原型以外又加入了带参数的原型:main(int argc, char *argv[]),又由于K&R C中允许Implicit declarations(未经声明而直接使用的将视为int类型,函数返回值也视为int)。main函数原型真正的定型是从C89(第一版ANSI C标准)开始的,此标准明确了int main(void)和int main(int argc, char *argv[])这两个原型,其它的原型是不允许的,考虑到对旧代码的兼容问题,许多编译器也允许K&R C中的原型,不带返回值类型的main视为void或int处理(由编译器决定)。从此以后main逐渐的定型下来,但部分编译器依然存在不同的扩展,比如说带有环境变量参数envp的扩展。总而言之,使用main最好严格按照标准来,否则代码不能保证可移植性。

论坛徽章:
17
处女座
日期:2013-08-27 09:59:352015亚冠之柏太阳神
日期:2015-07-30 10:16:402015亚冠之萨济拖拉机
日期:2015-07-29 18:58:182015年亚洲杯之巴勒斯坦
日期:2015-03-06 17:38:17摩羯座
日期:2014-12-11 21:31:34戌狗
日期:2014-07-20 20:57:32子鼠
日期:2014-05-15 16:25:21亥猪
日期:2014-02-11 17:32:05丑牛
日期:2014-01-20 15:45:51丑牛
日期:2013-10-22 11:12:56双子座
日期:2013-10-18 16:28:17白羊座
日期:2013-10-18 10:50:45
2 [报告]
发表于 2013-10-24 09:51 |显示全部楼层
回复 11# 511244213


    在C程序中通常使用两个常量表示程序退出的状态,EXIT_SUCCESS和EXIT_FAILURE,这两个常值具体的值由编译器实现去定义,但一般情况下EXIT_SUCCESS是0,而EXIT_FAILURE是1,每个程序都可以有自己的状态解释。也就是说返回值的具体含义取决于程序本身对其值的定义,这个没有统一的标准。

论坛徽章:
17
处女座
日期:2013-08-27 09:59:352015亚冠之柏太阳神
日期:2015-07-30 10:16:402015亚冠之萨济拖拉机
日期:2015-07-29 18:58:182015年亚洲杯之巴勒斯坦
日期:2015-03-06 17:38:17摩羯座
日期:2014-12-11 21:31:34戌狗
日期:2014-07-20 20:57:32子鼠
日期:2014-05-15 16:25:21亥猪
日期:2014-02-11 17:32:05丑牛
日期:2014-01-20 15:45:51丑牛
日期:2013-10-22 11:12:56双子座
日期:2013-10-18 16:28:17白羊座
日期:2013-10-18 10:50:45
3 [报告]
发表于 2013-10-24 09:53 |显示全部楼层
回复 12# 511244213


    ./a.out; echo $?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP