C/C++中main函数的返回值类型

 

         这里只讨论windows下的情况。

 

 

       在C/C++ 中,不返回任何信息的函数原型为“void function(...);”。可能正是因为这个,所以很多人都误认为如果不需要程序返回值时可以把main函数定义成void main() 。然而这种做法是错误的!

       虽然在一些编译器中,void main() 可以通过编译,但并非所有编译器都支持void main() ,因为标准中从来没有定义过void main()

       main 函数只有以下两种定义方式是正确的:

       int main()

       int main(int argc, char *argv[])

main 函数的返回值应该定义为 int 类型,C 和 C++ 标准中都是这样规定的。这样程序才能传告诉操作系统是否成功执行完毕。

       然而在C99标准中规定,如果 main 函数的最后没有写 return 语句的话,编译器要自动在生成的目标文件中(如 exe 文件)加入return 0; ,表示程序正常退出。不过因为 vc6 是 98 年的产品,所以vc6不会在目标文件中加入return 0;,所以其返回值会是一个随机值。

       下面先来看四段代码(vs2010中编译):

可以看到前三段代码的其实是一样的。即main 函数的最后没有写 return 语句的话,加入了return 0;,不论它的返回值是int,还是void。个人认为,这里编译器要这么做是为了兼容很多人的编程习惯。

       从以上的分析可以看出,main的返回值类型,写成void也不会错,它等效于没有return 语句的int类型。不过为了养成良好的习惯,最好还是写成int。如果你是为了void简单才写void,那从现在开始,都写成int吧,因为int更简单。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值