| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1824 人关注过本帖
标题:有关main()函数返回值的问题
只看楼主 加入收藏
duffebear
Rank: 1
等 级:新手上路
威 望:2
帖 子:172
专家分:0
注 册:2007-1-30
收藏
得分:0 

int main( void )--无参数形式
{
...
return 0;
}

int main( int argc, char *argv[] )--带参数形式
{
...
return 0;
}

死后定当长眠 生前何须久睡
2007-09-02 16:00
qwl1982
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-9-3
收藏
得分:0 

我也是不明白
void main()
{}

int main()
{return 0;}
到底有什么本质的区别?
既然main函数不需要返回值,为什么写成void main()就不是好习惯了呢?
main函数的返回值到底有什么用?迷惑ing......
为什么说c++ 要 int main()呢?


2007-09-04 02:45
qwl1982
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-9-3
收藏
得分:0 

明白了,看来还需要多学习
http://bbs.bc-cn.net/viewthread.php?tid=163877&star=at#讲的很明白了,谢谢斑竹~

浏览老版本的C代码,将会发现程序常常以

main()

这种形式开始。C90标准允许这种形式,但是C99标准不允许。因此即使你当前的编译器允许,也不要这么写。

你还可能看到过另一种形式:

void main()

有些编译器允许这种形式,但是还没有任何标准考虑接受它。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地表示:void main( ) 的定义从来就不存在于 C++ 或者 C 。所以,编译器不必接受这种形式,并且很多编译器也不允许这么写。

坚持使用标准的意义在于:当你把程序从一个编译器移到另一个编译器时,照样能正常运行。


2007-09-04 02:51
parklee
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-6-8
收藏
得分:0 
关键在于实际的2进制代码重 你写的main函数并不是程序的实际入口 如果你反汇编一下会看到 实际上在程序启动的时候,执行了很多步骤来为调用你的main函数做铺垫。那你也就知道为什么要用int而不是void了。因为你的main函数要告诉系统的调用函数main函数的执行结果。

2007-09-04 16:29
dart
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-9-2
收藏
得分:0 
谁说没有void main(){}的写法了......
我怎么基本上每次都这么调试都不报错????。。。。。
2007-09-04 21:03
huozoo
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-6-28
收藏
得分:0 
回复:(slblake)有关main()函数返回值的问题

不要过分研究这个问题,没什么好说的。
有一点要说的是:
当现在的编译器能完全满足标准的时候,那么
int main(){}就可以把return 0;省略,因为标准中是不写这句的!这点希望未来的编译器能改进!

2007-09-04 23:08
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
以下是引用冰的热度在2007-8-24 22:38:46的发言:
区别就在于返回值喽!

int main()需要返回一个int型值,一般是return 0;

void 的意思是没有返回值,注意是没有返回值,而不是返回void 类型的值,

这一点一定注意!!!

说到底,main()函数也是函数,跟普通函数一样,只是别的函数不能调用它,

你应该理解
int sum(int a,int b)
{
return a+b;
}

void sum(int a,int b)
{
cout<<a+b<<endl;
}
的区别吧,那你就应该理解int main()和void main()的区别了!

你试验下如下代码:

#include<iostream>
using namespace std;
int main()
{
cout<<"hello"<<endl;
main();
return 0;
}


自我放逐。。。
2007-09-05 15:19
qwl1982
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-9-3
收藏
得分:0 

发现int main(){}的一个好处。
可以在主函数任意位置写return 0; 结束主函数。


2007-09-05 17:36
qwl1982
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-9-3
收藏
得分:0 
请教17楼的大侠~
[QUOTE]#include<iostream>
using namespace std;
int main()
{
cout<<"hello"<<endl;
main();
return 0;
}
[/QUOTE]
理论上这么写不是应该死循环么?为什么在执行若干次后就停止了?

2007-09-05 17:40
qwl1982
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-9-3
收藏
得分:0 
已经知道了,程序是无限循环的。但是循环到一定次数以后,被系统终止了。
如果系统用vista的话,就会得到xxx.exe已经停止工作,windows正在检查这个错误

2007-09-05 18:40
快速回复:有关main()函数返回值的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012219 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved