int main函数后一定要加return new int0吗?

1277人阅读
C/C++(5)
在C和C++中,不接收任何参数也不返回任何信息的函数原型为”void foo(void);”. 可能正是由于这个原因,很多人误认为如果程序不需要返回值时,可以把main函数定义为: void main(void).
然而这是错误的!
main函数的返回值应该定义为int类型,C和C++标准中都是这样规定的.
对于”void main(void);”这种错误形式,虽然在一些编译器中可以通过编译(如vc6),但并非所有的编译器都支持,因为标准中从来没有定义过这种形式. g++3.2编译器中,如果返回值类型不是int类型,根本不会通过编译;则gcc3.2 编译器则会发出警告.
所以,如果想让你的程序有很好的可移植性,请一定要使用int main.
main函数几种形式如下:
int main(void);
int main(int argc,char* argv[]);
或者 int main(int argc, char** argv);
C++语言中:
int main();
int main(int argc,char* argv[]);
在main函数的返回值必须是int类型的前提下,如果main函数的最后没有写return语句,会如何?
C99和C++98规定编译器要自动在生成的目标文件中加入”return 0;”, 表示程序正常退出.写程序好的习惯是自己在main函数的最后加上return语句,因为并不是所有的编译器都支持这一特性.
vc6编译器不会在目标文件中自动添加return 0语句.
gcc3.2(Linux下的C编译器)支持这个特性.
g++3.2(Linux下的C++编译器)支持这个特性.
综上所述,由于void main类型不在规定中,而且不同的编译器对main函数的返回类型的处理不一样,以及不同编译器不一定会在目标文件中自动加入return语句这3点,为了让我们的程序有很好的可移植性,写main函数时需要按照以下形式:
int main()
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8126次
排名:千里之外
原创:22篇
评论:10条
(8)(4)(1)(2)(4)(5)(2)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'文章 - 0&评论 - 0&trackbacks - 0
  main函数称之为主函数,一个C程序总是从main()函数开始执行的。在关于C语言的网贴和图书中,可以看到main函数的多种格式,这些格式,有的是正确的,有的是不正确的,为了避免错误,现归纳整理如下。
  一、main函数头的格式:
  1.int main(int argc, char *argv[])
  推荐指数:★★★★★
  有参数的格式,这是符合C89、C99标准的写法。第一个参数argc(argument count)是命令行中的字符串个数。第二个参数argv(argument value)是一个指针数组,一般程序名赋值给argv[0],从argv[1]开始对各个参数依次赋值。
  如执行命令:dir /a /p &
  则:argc=3,argv[0]=dir,argv[1]=/a,argv[2]=/p
int main(int argc, char *argv[])
  2.int main(void)
  推荐指数:★★★★★
  无参数的格式,这是符合C89、C99标准的写法。
int main(void)
  3.int main()
  推荐指数:★★★☆☆
  无参数的格式,相当于第2种写法,C89标准中允许,常用的编译器也支持这种写法,但不符合最新的 C99 标准。
int main()
  4.main()
  推荐指数:★☆☆☆☆
  无参数的格式,相当于第3种写法,C89标准中允许,但不符合C99 标准。第一版的C语言只有int一种类型,没有char,long,float等,既然只有一种类型,那么就可以不写,后来的改进版为了兼容以前的代码于是规定:不明确标明返回值的,默认返回值为int,也就是说 main()等同于int main()。在C99标准中,要求编译器至少给 main() 这种用法来个警告。尽管这种写法也能通过编译,但强烈建议不要因为少敲几个字母而去这么写。
  5.void main()
  推荐指数:☆☆☆☆☆
  不推荐这种写法。在 C 和 C++ 中,不接收任何参数也不返回任何信息的函数原型为&void foo(void);&。可能正是因为这个,所以很多人都误认为如果不需要程序返回值时可以把 main函数定义成void main(void) 。然而这是错误的!main 函数的返回值应该定义为 int 类型,C 和 C++ 标准中都是这样规定的。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地表示:void main( ) 的定义从来就不存在于 C++ 或者 C 。虽然有的编译器中,void main 可以通过编译(如 vc6),但标准中从来没有定义过 void main 。所以,如果你想你的程序拥有很好的可移植性,请一定要用int&main。
void main()
&  二、main函数返回值:
  main函数的返回值类型是int型的,而程序最后的 return 0正与之呼应,0就是main函数的返回值。那么这个0返回到那里呢?返回给操作系统,表示程序正常退出。
  如果main函数的最后没有写return语句的话,C99规定编译器要自动在生成的目标文件中加入return&0,表示程序正常退出。注意,C-Free的MinGW5编译器自动加入的是return 1,VC6不会在目标文件中加入return 0。尽管省略return语句后,C-Free和VC6等一些编译器也能通过编译,但仍建议最好加上return语句,养成良好的遵守标准的习惯。
阅读(...) 评论()05-2205-2105-2105-2205-2205-22
也许你感兴趣满意回答 在C++中,main()一般要求用int,即应写为
int main (){
但有一些也可以写为void main() ,而有一些不能这么写
--------------------------------------------------------------------------------------------
任何时候都可以用int main(),所以建议不用void main()
用C++编译器编译C一般不会有什么问题,因为C++是兼容C的
要看输出,有一个办法:
在#include&stdio.h&后的下一行加#include&conio.h&
并在return 0;前一行加getch();
TA的最新馆藏[转]&[转]&
喜欢该文的人也喜欢}

我要回帖

更多关于 return new int 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信