| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2243 人关注过本帖
标题:int main和void main的区别。
只看楼主 加入收藏
welmen
Rank: 2
来 自:粤
等 级:论坛游民
帖 子:10
专家分:15
注 册:2008-12-2
收藏
得分:1 
一般缺省
只输入mian.
则函数是int类型
int是整形,具有返回值
void则是不具有返回值的
2009-07-22 21:46
prankmoon
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:161
专家分:921
注 册:2009-7-21
收藏
得分:5 
本人所理解的 int main 和 void main 的区别如下:

1. int main 意思是函数需返回一个整型值(废话!),一般我们会在结尾显式地加上 return xx;而 void main 意思是函数无需返回一个整型值,一般我们会在结尾显式地加上 return。对于 void main 来说,如果我们没有显式地加上 return,那么编译器会自动给我们隐式地加上return。当然,我们也可以给两者均显式地加上或者不加 return 或者 return xx;也就是说对于 int main,你加上 return,对于 void main,你加上 return xx,基本都不会出现什么问题,至多也就是有的编译器可能会发出警告而已。

但我们一般推荐对于 int main 显式地加上 return xx;对于 void main 显式地加上 return;在这两者之间,现在一般推荐使用 int main。

2. int main 和 void main 的另一个区别(其实主要是 return xx 和 return的区别)还在于对程序运行结果的检测(比如,我们想知道一程序是否正常返回;如果我们想主动地告知外部我们程序是否有异常情况出现,我们有可能使用 return 0 表示正常返回,return -1 表示有问题发生)。比如,在 linux 下我们用 echo $? 测试程序的返回值。

下面,我们在 linux 下用例子来说明两者之间的差异:

先说明一下,我们仅使用默认编译参数:
gcc -o hello hello.c

1>
int main(void)
{
    printf("hello world!\n");
   
    return 0;   // 表示程序正常返回
}
执行 ./hello ; ehco $?
echo $? 的结果为 0

2>
int main(void)
{
    printf("hello world!\n");
   
    return -1;  // 我们主动认为有异常情况出现
}

echo $? 的结果为 255,也就是 -1了

3>
int main(void)
{
    printf("hello world!\n");
   
    return;     // 我们只是 return,却不给它整型值
}

echo $? 的结果为12,大家想想这个12是什么意思,在最下面,我会给出答案。

4>
void main(void)
{
    printf("hello world!\n");
   
    return;
}

gcc 4.3.3编译时会出现警告,警告信息如下:
hello.c: In function 'main':
hello.c:5: warning: return type of 'main' is not 'int'
我们不理睬它。(注:VC6在默认编译条件下,不会发出警告信息。)

最终,echo $? 的结果为12。

5>
void main(void)
{
    printf("hello world!\n");
   
    return 0;
}
编译警告信息如下:
hello.c: In function 'main':
hello.c:8: warning: 'return' with a value, in function returning void
hello.c:5: warning: return type of 'main' is not 'int'

最终,echo $? 的结果为12。也就是说,编译器忽略了我们的 return 0。


6>
void main(void)
{
    printf("hello world!\n");
}
编译警告信息如下:
hello.c: In function 'main':
hello.c:5: warning: return type of 'main' is not 'int'
(注:VC6在默认编译条件下,也不会发出警告信息。)

echo $? 的结果为12

7> 其实还可以抛弃 int 和 void 而只使用 main,这个前面已经有人说过了,我就不再说了。







答案:12 表示 printf函数的返回结果,也就是"hello world!"的串长度。

[[it] 本帖最后由 prankmoon 于 2009-7-22 23:51 编辑 [/it]]
收到的鲜花
2009-07-22 23:40
w123012306
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:蜘蛛侠
威 望:4
帖 子:307
专家分:1180
注 册:2010-4-22
收藏
得分:0 
int main返回整型值!

楼上,楼下的一定要幸福开心哦!
2010-05-21 21:16
nongzhaobo
Rank: 3Rank: 3
来 自:广西南宁
等 级:论坛游侠
帖 子:59
专家分:155
注 册:2012-4-8
收藏
得分:0 
什么是返还值?????我是菜鸟,不用谢....
2012-04-08 14:45
快速回复:int main和void main的区别。
数据加载中...
 
   



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

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