+ -
当前位置:首页 → 问答吧 → 什么时候用return什么时候用exit啊

什么时候用return什么时候用exit啊

时间:2010-08-20

来源:互联网

看了“又一道诡异的题目”里一位网友的题目。


QUOTE:
  1. #include <stdio.h>

  2. int i = 8;

  3. int main(void)
  4. {
  5.         i--;
  6.         printf("i =[%d]\n", i);
  7.         if (i > 2){
  8.                 main();
  9.         }
  10.         printf("i*i =[%d]\n", i*i);

  11.         return 0;
  12. }
复制代码
输出为
  1. i =[7]
  2. i =[6]
  3. i =[5]
  4. i =[4]
  5. i =[3]
  6. i =[2]
  7. i*i =[4]
  8. i*i =[4]
  9. i*i =[4]
  10. i*i =[4]
  11. i*i =[4]
  12. i*i =[4]
复制代码
这个该咋解释..
后面的  i*i竟然也输出了六次,但是都等于4..



有朋友回复用exit(0)就会只打印一次4.

我想知道,在程序中,什么时候用return什么时候用exit啊。

作者: chinesedragon   发布时间: 2010-08-20

那贴里 liwangli1983 已经解释啦.

作者: pandaiam   发布时间: 2010-08-20



QUOTE:
那贴里 liwangli1983 已经解释啦.
pandaiam 发表于 2010-08-20 14:14




    我知道,但是那只解释了这一道题啊

作者: chinesedragon   发布时间: 2010-08-20

main里面调用return和exit,仅仅是当main里面还有调用main的时候才有区别.
其他的时候都一样..

但是main里面再调用main,这种用法一般没啥用..
所以,在main里面, return和exit还可以认为是等效的.

作者: pandaiam   发布时间: 2010-08-20

类似Pascal里头的exit和halt吧

作者: daybreakcx   发布时间: 2010-08-20

return退出函数,exit进程退出

作者: hellioncu   发布时间: 2010-08-20



QUOTE:
return退出函数,exit进程退出
hellioncu 发表于 2010-08-20 14:17




    你的意思是我在除main函数的其它函数中调用exit,则整个进程就退出了,这个函数就不返回main了???

作者: chinesedragon   发布时间: 2010-08-20

回ls,当然了....

作者: pandaiam   发布时间: 2010-08-20



QUOTE:
你的意思是我在除main函数的其它函数中调用exit,则整个进程就退出了,这个函数就不返回main了? ...
chinesedragon 发表于 2010-08-20 14:21




    不管哪里调用,比如其它函数,甚至是线程,只要调用exit,整个进程就退出了

作者: liwangli1983   发布时间: 2010-08-20



QUOTE:
不管哪里调用,比如其它函数,甚至是线程,只要调用exit,整个进程就退出了
liwangli1983 发表于 2010-08-20 14:23




    哈哈,这下明白了。以前看见在main函数中有的用return有的用exit,迷惑啊

作者: chinesedragon   发布时间: 2010-08-20

回复 chinesedragon


    exit是直接退出程序,而return是返回调用该程序的程序。

    递归之后如果用return的话 当然是返回上一级函数 所有用return的话 会打印4个4  

    而exit是使整个程序退出,所以就直接退出了   不管是否递归几层。

作者: zhanglistar   发布时间: 2010-08-20



QUOTE:
回复  chinesedragon


    exit是直接退出程序,而return是返回调用该程序的程序。

    递归之后如 ...
zhanglistar 发表于 2010-08-20 15:06




    谢谢,现在明白了

作者: chinesedragon   发布时间: 2010-08-20

return是函数级的   exit是进程级的
int main ()
{
    while(1)

}

作者: xxw19840406   发布时间: 2010-08-20