Chinaunix首页 | 论坛 | 博客
  • 博客访问: 20604
  • 博文数量: 5
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-18 11:51
文章分类

全部博文(5)

文章存档

2011年(1)

2008年(4)

我的朋友
最近访客

分类: C/C++

2008-07-25 18:43:33

发现了一个现象,无法理解,下面三个程序,由于函数的返回方式不同导致了i值的不同;

#include
#include
#include
#include
int main()
{
    int i;
    pid_t pid;
    for(i=0;i<2;)
    {        
        pid=vfork();
        printf("i_for=%d\n",i);
        i++;    
    }
    printf("i_end=%d\n\n",i);
    return 0;/*此处代码用一下三种情况:(1)"return 0;"(2)删掉此行,不返回任何值;(3)"exit(0);"*/
}

运行结果:

(1)return 0;
i_for=0
i_for=1
i_end=2

i_for=0
i_for=1
i_end=2

(2)不返回;
i_for=0
i_for=1
i_end=2

i_for=0
i_for=1
i_end=2

(3)exit(0);
i_for=0
i_for=1
i_end=2

i_for=2
i_end=3

i_for=3
i_end=4

疑问:
(1)“return 0”和“exit(0)”有什么不同呢?
(2)它们的不同又是如何导致了i值的不同以及整个程序输出方式的不同呢?

请教,请教......

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