C语言如何提前退出所调用的子函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何提前退出所调用的子函数?相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void test(int k)
if ( k>10)
exit(0);
/*这里还有其他处理程序,本意是想判断i如果大于10就不处理余下的代码*/

void main(void)
int i;
clrscr();
printf("\n");
for(i=0;i<5;i++)
printf("%d ",i);
test(12);
i++;
printf("%d ",i);

原本希望输出:0 1 2 3 4 5
但是只输出0,1,2,3,4,还有5未输出.
如果希望子函数不影响主函数后面的代码执行,该如何写代码.
主要想自动exit(0)函数的用法
不想把子函数写成:
void test(int k)
if (k<=10) 代码....
else 代码...

这样是可以,但是如果子函数代码多了的话,很容易把搞混淆.
希望能详细讲解.
谢谢!

C/C++中,用return可以从任何子函数中退出返回到主调函数,而exit()是用来退出程序返回操作系统的。至于怕把搞混了,那你是不可能回避的,因为是C/C++的重要语句成份,而且写C/C++是提倡多用的——就是说不要轻易省掉,必要时还可以多加。可见,程序员们的经验是不仅不会搞混,而且有助于代码的阅读! 参考技术A 用return可以从任何子函数中退出返回到主调函数,而exit()是用来退出程序返回操作系统的。至于怕把搞混了,那你是不可能回避的,因为是C/C++的重要语句成份,而且写C/C++是提倡多用的——就是说不要轻易省掉,必要时还可以多加。 参考技术B 用return 啊

void test(int k)
if ( k>10)
return; //exit(0);
/*这里还有其他处理程序,本意是想判断i如果大于10就不处理余下的代码*/
参考技术C 如果是想退出一个函数就用return,退出应用程序用exit() 参考技术D 就用return;这样就好了
关于容易搞混淆,你可以通过不同的缩进来对齐对应的追问

谢谢babybluein及时回答.
在其他高级语言里如delphi是可以用exit(),退出当前调用的子函数的,而且不影响调用函数的其他代码执行.
C里面给的EXIT(0)到底有何用,依此看来不是毫无用处了?,按理谁也不会想要把MAIN()函数退出啊
而且test函数是void型,这里里不需要返回值的

追答

http://www.cplusplus.com/reference/cstdlib/exit/

exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1,标准C里有EXIT_SUCCESS和EXIT_FAILURE两个宏,用exit(EXIT_SUCCESS);可读性比较好一点。
使用exit()时,可以不论main()的返回值类型。
一般如果用return的话,会尝试自己去接住返回值并给处理掉,exit应该是符合默认的处理方式

c语言 退出整个程序或函数的命令是啥

c语言退出整个程序或函数的命令是return、goto 、break 、break。

1、return 返回;

 return 表示从被调用函数返回主调函数继续执行,返回时可附带一个返回值,由return后面的参数设定。

2、goto 无条件跳转;

goto语句也称作无条件转移语句,其一般格式为goto语句标号:其中语句标号是按照标识符规定书写的符号,放在某一行语句行的前面,标号后加冒号(:)。

3、break 调处最近一层块;

大多数情况下是终止上一层的循环,C语言中break在switch中执行一条case后跳出语句的作用  使程序跳出switch执行switch以后的语句 如果没有break switch会从满足条件的地方执行到switch结构结束。

扩展资料

break语句使用

示例:

#include <stdio.h>

void main()

int x=1;

while(x<=4)

printf("x=%d\\n",x);

if (x==3)

break;

x++;

参考技术A c语言退出整个程序或函数的命令是return、goto 、break 、break。

1、return 返回;

return 表示从被调用函数返回主调函数继续执行,返回时可附带一个返回值,由return后面的参数设定。

2、goto 无条件跳转;

goto语句也称作无条件转移语句,其一般格式为goto语句标号:其中语句标号是按照标识符规定书写的符号,放在某一行语句行的前面,标号后加冒号(:)。

3、break 调处最近一层块;

大多数情况下是终止上一层的循环,C语言中break在switch中执行一条case后跳出语句的作用 使程序跳出switch执行switch以后的语句 如果没有break switch会从满足条件的地方执行到switch结构结束。
参考技术B 在main()函数中return 可以退出当前进程,如果当前程序只有一个进程则退出整个应用程序,有多个进程则其他进程不受影响。其他函数中return可以退出当前函数。

程序中任何地方执行exit()可以退出当前进程,如果当前程序只有一个进程则退出整个应用程序,若有多个进程则其他进程不受影响。

请明确“程序”和“进程”的区别。
参考技术C return可以退出当前函数,如果用在main函数中,则可以直接退出进程。
exit()可以直接退出进程,常用于需要在非main函数中需要退出进程的情况。本回答被提问者采纳
参考技术D 一个是return 0;或return 1;
还有一个是需要#include<stdlib.h>头文件,在函数里面加上exit (0);就可以推出程序了

以上是关于C语言如何提前退出所调用的子函数?的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何终止线程

c语言中 如何单独运行一个子函数啊?或者说怎样验证一个子函数的正确性、以及其功能啊?求助···

c语言 退出函数 写法

c语言 退出整个程序或函数的命令是啥

c语言一个死循环中为啥执行完一个功能函数就退出了?

单片机 C语言,如何调用外部自定义函数。