比较 Return/Break/Continue/Goto
来源:互联网 发布:剑三花哥捏脸数据 编辑:程序博客网 时间:2024/05/24 20:07
比较 Return/Break/Continue/Goto
一看到这个标题,估计很多人会相当不屑。确实,这四条语句是C语句里再简单不过的,但是对于初学者而言,做一下区分和比较还是很有意义的。毕竟在这些简单的语句上,我们经常会犯一些低级的错误。更进一步,如果能灵活运用往往会有出人意料的效果,避免很多不必要的苦力劳作。
1、 return
return语句用于结束一个函数,而且仅有这一项作用。后面可以加一些常量、变量或者表达式等,作为函数的返回值。也可以不带这些项,就仅仅用于结束当前这个函数。
对于return语句要注意以下几点:
(1) 一个函数体里可以有多条return语句,但是你最好实际只想要程序执行其中的一条(程序也只会执行其中的一条),想借用多条return语句传递多个函数返回值的图谋注定是要失败的。下面这个函数是不可能实现两个数的交换的,这一限定会令很多初学者相当不爽,因为你编写的很多函数确实需要传递多个返回值,这一需求可以通过其他方法解决,可以参考相关书籍。
int swap_val(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
return a;
return b;
}
(2) 多条return语句的一般伴随着选择语句,在选择分支比较多时,要特别注意。程序遇到return语句就会返回,后面的语句都不回被执行到。而对于这一点编译器不回报出任何错误或警告,因为这并不违反语法。
(3) 除了返回值为void的类型的函数之外,所以的函数都至少有一条return语句。实际上很多建议,在void类型的函数内也最好加一条return语句。
Void fun()
{
…
return;
}
2、 break/continue
break用于从一个语句块里跳出来,继续执行下面的语句。可以用于选择语句或者循环语句。
(1) switch
switch选择语句的一般实现如下:
switch(value)
{
case ONE:
…
break;
case TWO:
…
break;
default:
break;
}
case 是选择语句的入口点,一旦找到入口,程序就会向下执行,直到第一次遇到break语句跳出。这一点使得switch语句十分灵活,看下面的例子。
#include <stdio.h>
int main()
{
int score;
printf("Plese input a student's score(End with a letter):\n");
while(scanf("%d", &score))
{
switch(score/10)
{
case 10:
printf("Perfect\n");
break;
case 9:
case 8:
printf("Good\n");
break;
case 7:
case 6:
printf("Pass\n");
break;
default:
printf("Failure\n");
break;
}
}
return 0;
}
可以看到break可以使你少敲几行代码,在这看来貌似也没省多少(没办法,写程序有时就是一项体力活啊,少写一行是一行),但是在一些复杂的程序中还是可以减少不少劳动的,而且会使代码简洁。
(2) 循环语句中的break和continue
这里只要注意一点就行了,break是跳出循环体执行循环下面的语句,而continue只是提前结束一个循环体的某一次循环,接着执行下一次循环。break不能跳出多个循环的嵌套。即,
for()
{
for()
{
for()
{
break;
}
A;
}
}
B;
程序执行break后,执行的是A语句而不是B语句。
(3)break即可以用在选择结构里,也可以用在循环结构里。而continue只能用在for, while, do/while循环体里。
3、goto
goto很有点汇编的风格,所以在C这种相对高级一点语言中应该尽量少用,因为它会破坏程序的本来结构。甚至有一些“激进”分子建议应该禁止它(意识形态不同遭人排挤啊!招谁了,就要禁止人家)。但是goto也不是完全没有用处的,比如上例,就可以使用goto跳出这种循环的嵌套。
for()
{
for()
{
for()
{
goto flag;
}
A;
}
}
flag: B;- 比较 Return/Break/Continue/Goto
- break goto return continue
- break continue goto Return 区别
- break,continue,goto,return语句
- break,continue,goto,return语句区别详解
- break,continue,goto,return语句区别详解
- break,continue,goto,return语句区别详解
- break,continue,goto,return区别详解
- break, continue, goto, return语句详解
- 跳转语句:goto;break;continue;return
- C++ 转向语句:break continue goto return
- 转向语句(break/continue/goto/return)
- C++ 转向语句:break continue goto return
- goto break return continue的区别
- 跳出关键词break、goto、return和continue
- goto,break,return及continue的区别
- goto,break,continue,return的一些总结
- C#参考 跳转语句(break,continue,goto,return,throw)
- 使用标签对HTML特殊字符进行转义
- break和continue的用法
- Eclipse EE创建web工程
- VC编程常用捷径
- USB命令(请求)和USB描述符分析及usb鼠标枚举数据流分析
- 比较 Return/Break/Continue/Goto
- WIN7下安装ADS(ARM Developer Suite)出错
- win7(64)未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序
- WinSock基本I/O模型简介
- android ListView的简单实现
- 自定义标签
- 标砖标签库 迭代标签入门
- Shaping Regions解题报告
- 设置窗口风格