关于return、exit、continue和break的比较
来源:互联网 发布:淘宝帐号已被限制登录 编辑:程序博客网 时间:2024/05/16 09:12
return:用于结束一个函数,并赋值给函数返回值,在main函数中使用效果等同于exit
exit:用于结束一个进程
continue:使while或for或switch循环从循环体顶端开始
break:可以立即终止循环,使程序跳转到循环体外继续执行
举例:
1、return函数
#include<stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
2、exit函数
exit 是一个库函数,在头文件#include<stdlib.h>中
exit(1) 表示发生错误后退出程序,exit(0) 表示正常退出
这个系统调用是用来终止一个进程的,无论在程序中的什么位置,只要执行exit,进程就会从终止进程的运行。
#include <stdlib.h>
#include <stdio.h>
main()
{
printf("output begin/n");
exit(0);
printf("output end/n");
}
在linux平台下
exit()用来正常终结目前进程的执行,并把参数status返回给父进程,而进程所有的缓冲区数据会自动写回并关闭未关闭的文件。
#include <stdlib.h>
#include <stdio.h>
main()
{
printf("output begin/n");
printf("content in buffer");
exit(0);
}
$ ./exit1
output begin
content in buffer
printf()会根据参数format字符串来转换并格式化数据,然后将结果写出到标准输出设备,直到出现字符串结束('/0')为止。可见,exit将未出现换行符的语句保存到标注输出文件。
3._exit()不会执行清理I/O缓冲的操作。
_exit()用来立刻结束目前进程的执行,并把参数status返回给父进程,并关闭未关闭的文件。此函数调用后不会返回,并且会传递SIGCHLD信号给父进程,父进程可以由wait函数取得子进程结束状态。
#include <stdio.h>
#include <unistd.h>
main()
{
printf("output begin/n");
printf("content in buffer/n");
_exit(0);
}
$ ./exit2
output begin
实际上因为第二条printf语句没有满 足特定的条件,它们还只是保存在缓冲区内,这时我们用_exit()函数直接将进程关闭,缓冲区中的数据就会丢失。
3、return函数exit函数区别:
1,exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。main函数结束时也会隐式地调用 exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程,而 return是返回函数值并退出函数。
2,return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。
3.在有返回值的函数中,return语句的作用是提供整个函数的返回值,并结束当前函数返回到调用它的地方。在没有返回值的函数中也可以使用return语句,例如当检查到一个错误时提前结束当前函数的执行并返回。一般程序执行到 main() 的结束就完成了, 如果想在程序结束时做一些事情, 可以尝试着用这个函数.
#include<stdio.h>
#include<stdlib.h>
void test1(void)
{
printf("exit test1\n");
}
void test2(void)
{
printf("exit test2\n");
}
int main()
{
atexit(test1);
atexit(test2);
printf("exit main\n");
return 0;
}
运行结果:
exit main
exit test2
exit test1
4、continue和break的异同
continue和break都可以用于C提供的全部三种循环结构。continue会使循环跳出循环体内剩余的语句,转而判断循环条件是否成立,然后选择是否再次进入循环体。break作用是跳出循环,如果break位于循环嵌套中的一个内循环则仅跳出这个内循环。
#include<stdio.h>
int main()
{
int k=0;
char c='A';
do {
switch(c++){
case 'A':
k++;
break;
case 'B':
k--;
case 'C':
k+=2;
break;
case 'D':
k%=2;
continue;
case 'E':
k*=10;
break;
default:
k/=3;
}
k++;
}while(c<'G');
printf("k=%d\n",k);
return 0;
}
运行结果:k=4
break 语句通常用在循环语句和开关语句中。当 break 用于开关语句 switch 中时,可使
程序跳出 switch 而执行 switch 以后的语句;如果没有 break 语句,则将成为一个死循环而
无法退出。
当 break 语句用于 do-while、for、while 循环语句中时,可使程序终止循环而执行循环
后面的语句, 通常 break 语句总是与 if 语句联在一起。即满足条件时便跳出循环。
continue 语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue 语
句只用在 for、while、do-while 等循环体中,常与 if 条件语句一起使用,用来加速循环。
下面实现任意偶数分解为两个素数之和:
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,d;
while(1)
{
printf("请输入任意>6的偶数:");
scanf("%d",&a);
for(b=3;b<a/2;b+=2)
{
for(c=2;c<=sqrt(b);c++)
if(b%c==0)break;
if(c<=sqrt(b))continue;
d=a-b;
for(c=2;c<=sqrt(d);c++)
if(d%c==0)break;
if(c<sqrt(d))continue;
printf("结果是:%d=%d+%d\n",a,b,d);
}
}
return 0;
}
- 关于return、exit、continue和break的比较
- 关于break、continue和return的区别
- break和continue, exit和return
- 循环结构中break、continue、return和exit的区别
- 循环结构中break、continue、return和exit的区别
- 循环结构中break、continue、return和exit的区别
- 循环结构中break、continue、return和exit的区别
- 循环结构中break、continue、return和exit的区别
- 循环结构中break、continue、return和exit的区别
- 循环结构中break、continue、return和exit的区别
- 循环结构中break、continue、return和exit的区别
- 循环结构中break、continue、return和exit的区别
- return break continue exit的区别
- exit,continue,return与break的区别
- break,continue,return,exit的区别
- return,exit,break,continue的区别
- 跳转控制语句:关于break,continue,和return的区别
- Java语言中关于break,continue和return的区别
- Android导航菜单横向左右滑动并和下方的控件实现联动
- SCM600 Study Note
- 在ruby使用ssh连接linux服务器
- 行飞档位的夜晚可见系统
- 冒泡排序(bubble_sort)详解
- 关于return、exit、continue和break的比较
- Java中的访问权限
- 几例从数据到结论的案例
- openssl及安全分析测试方法
- hadoop应用与开发
- matlab GUI之常用对话框(一)---uigetfile\ uiputfile \ uisetcolor \ uisetfont
- ADS8344数据采集
- 10年程序人生感悟(二)
- 【小蒙淘金】1.23金评-黄金白银行情分析及部分建议