Chinaunix首页 | 论坛 | 博客
  • 博客访问: 571261
  • 博文数量: 70
  • 博客积分: 3736
  • 博客等级: 中校
  • 技术积分: 1728
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-08 09:15
文章分类
文章存档

2014年(1)

2012年(21)

2011年(7)

2010年(28)

2009年(13)

分类: LINUX

2012-01-16 13:57:37

编程的时候发现
void main()和int main()
都可以(没有编译错误),但是它们真的没有区别么?本文将深刻剖析这个问题
test1.c
  1. #include
  2. int main()
  3. {
  4. printf("hello world\n");
  5. return 0;
  6. }
gcc -o test1 test1.c
运行test1,然后:
[root@localhost tast]# echo $?
0

test2.c
  1. #include
  2. void main()
  3. {
  4. printf("hello world\n");
  5. }
gcc -o test2 test2.c
运行test2,然后:
[root@localhost tast]# echo $?
12
这是它们的第一个区别:void main的返回值是随机的,所以你若是在shell里调用这个程序,那么返回值是无法预料的(程序正确执行,却返回了12),而用int main的话,你可以按照习惯返回不同的值以提示成功或者失败。

第二个:
int main是c标准定义的,按照标准来操作,总是比较安全的。

第三个:
c运行库期待main函数返回一个值,假如main不这样作,将会让堆栈产生混乱

阅读(1331) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~