exit的话是在stdlib的头文件里面定义的,他是的程序退出,正如exit的字面意思一样
break的话是终止当前循环继续进行循环后面的语句,但是程序照样还在进行
只能while switch for中使用break;
但是可以在任何语句中用exit;

本文转载:http://blog.chinaunix.net/uid-26715658-id-3254915.html

break和continue的使用范围比较一致,两都可以用于循环,其中break还可以用于switch。功能上也有一定的相似性,break就相当于退学,continue则相当于跳级。对于break,程序究竟跳到哪儿比较好理解。但是continue究竟跳到哪儿去了,初学者可能有些疑惑,不妨就当它跳到了循环体最后一句语句的后面。
  如果它们处在由多重循环和switch组成的圈圈里,那么它们就对包括它们的最里层起作用。于是,设想一下子跳出多重循环的人可能忘不了goto。 

break语句不能用于循环语句(如for循环或while循环)和switch语句之外的任何其他语句中。

 Continue语句和Break语句的区别是:continue语句只结束本次循环,而不是终止整个循环的执行。而Break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。

引用:从上世纪60年代后期开始,不主张使用goto语句。……所有使用goto的程序都可以改写成不用goto。
  笔记:goto是一个很有争议的语句,语多书本建议少用或不用它,我个人的习惯是坚决不用。不过,至于“上世纪60年代”这个说法,我倒是一直不知道。因为我自己学习BASIC已经是1994年,那时候学的是带行号的GW-BASIC,goto是必须用到的语句。莫非当时我们学校开设的课程居然是落后二十年的内容?
  林锐博士对goto另有看法,他说:“错误是程序员自己造成的,不是goto的过错。goto至少有一处可显神通,它能从多重循环中咻地一下子跳到外面,……就像房子着火了,来不及从楼梯一级一级往下走,可从窗口跳出火坑。……”(《高质量C++/C编程指南》第32页)
  我写的程序目前还没有超越三级循环。从最里层往外跳,如果跳一层,就break,如果跳两层或三层,一是这种可能性很小,二是如果真的碰到了,我就用其它条件来控制外层循环是否继续break,自从1997年进入结构化的程序设计以来,我的确完全抛弃了goto。——VB中的“On Error Goto”除外,出现错误,自然不管在哪一层,都给我跳进错误处理中。
  goto的目标是一个标号,这个标号的起名倒有点意思,因为标号只用于goto,所以它的名字可以与任何变量名以及其它标识符一样而不产生重名。以前的程序是带行号的,所以就“goto 行号”,现在程序不带行号了,但是允许在任何地方加标号。编译器在碰到它们的时候,大概就是凭其后头的冒号来判断这个名字不需要检验合法性。那么,C++中已有的“public:”算不算标号呢?
  为此,我做了个实验:实验内容一是我在类的声明里加入了一行“pub:”,二是我在程序段中加入了一行“public:”。结果发现两都都不能通过编译。也就是说,实验一说明在类定义这样的地方不允许使用标号(也用不着,因为它不在任何函数内部,goto是运行时的事,与编译无关,而且goto不允许跨函数跳越。),实验二说明在程序段中的标号不允许使用保留字。

下面举例说明:

#include 
void main() 
{
int n, m;
/*这个循环输出1 2 3 4, 在n是5的时候循环退出*/ 
for ( n = 1; n <= 10; n ++ ) 
{
   if ( n == 5 )
    break; 
   printf( " %d", n );
}

printf( "\n" );
/*这个循环输出1 2 3 4 6 7*/
for ( m = 1; m <= 10; m ++ ) 
{
   /*在m是5的时候没有执行当次循环的其他语句,所以未输出5*/ 
   if ( m == 5 ) 
    continue;
   /*在m是8的时候循环跳转到RET处,连End都不会输出,如果是break,还能输出End*/
   if ( m == 8 )
   {
    goto RET;
   }
   printf(" %d",m); 
}

printf ("End");

RET:
return;
}

C语言中的break、continue和goto三者的区别与用法的更多相关文章

  1. iOS中break、continue、return三者的区别

    iOS中break.continue.return三者的区别 1. break         直接跳出当前层次的循环. 如果嵌套循环如for中嵌套while,break只能跳出内层的while循环, ...

  2. java语言中public、private、protected三个关键字的用法,重写和重载的区别。

    java语言中public.private.protected三个关键字的用法,重写和重载的区别. 解答: 作用域 当前类 同包 子类 其它 public √ √ √ √ protected √ √ ...

  3. break、continue和goto 三者作用介绍

    跳跃语句 由于break.continue和goto语句有助于跳跃到代码中的某个特定语句,因此它们属于跳跃语句.下面是这三个语句的介绍. ①break语句 这个语句常与switch语句联合使用:但是, ...

  4. 退出循环break,continue,return,goto分析

    /* 在循环中间设置单个或者多个退出点,可以使用的语句有:break语句.continue语句.goto语句. return */ (1)break :break语句语句用于循环或 switch 语句 ...

  5. break,continue,return和exit的区别

    1.break break语句的使用场合主要是switch语句和循环结构. 在循环结构中使用break语句,就退出循环,接着执行循环结构下面的第一条语句. 如果在多重嵌套循环中使用break语句,当执 ...

  6. C语言break/continue/exit/return的功能区别

    break是跳出整个循环而执行循环体之外的下一条语句: continue只是跳出本次循环继续判断下一次循环条件是否满足. exit() 结束当前进程/当前程式/,在整个程式中,只要调用 exit ,就 ...

  7. c语言中%s与%c对读入字符串的区别

    对于scanf函数,需求%s类型时,\n是不会影响scanf内容的对于需求%c类型时,\n也是字符,自然会有影响.

  8. C语言中memset(void *s, char ch,unsigned n)用的用法

    将指针s所指的内存空间中前n为重置为字符c 程序例: #include <string.h> #include <stdio.h> #include <memory.h& ...

  9. C++语言中cin cin.getline cin.get getline gets getchar 的用法实例

    #include <iostream> #include <string> using namespace std; //关于cin cin.getline cin.get g ...

随机推荐

  1. Core Animation编程指南

    本文是<Core Animation Programming Guide>2013-01-28更新版本的译文.本文略去了原文中关于OS X平台上Core Animation相关内容.因为原 ...

  2. DALSA Coreco - 图像处理软件(Sapera LT )

    http://blog.csdn.net/linglongyouzhi/article/details/3505845 概述 Sapera LT 是一套用于图像采集.显示和控制的独立于硬件以外的 C ...

  3. 单步调试 step into/step out/step over 区别

    step into:单步执行,遇到子函数就进入并且继续单步执行(简而言之,进入子函数): step over:在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止, ...

  4. Writing the first draft of your science paper — some dos and don’ts

    Writing the first draft of your science paper — some dos and don’ts 如何起草一篇科学论文?经验丰富的Angel Borja教授告诉你 ...

  5. iOS系统navigationBar背景色,文字颜色处理

    - (void)setRightBarButtonItem { // Create done Button UIBarButtonItem *doneButton = [[UIBarButtonIte ...

  6. (翻译)初学者的object-C指南

    初学者的object-C指南 英文原文:http://blog.teamtreehouse.com/the-beginners-guide-to-objective-c-language-and-va ...

  7. linux 的终端字体色和背景色的修改方法(一)

    更改Linux系统终端的颜色主题 随着Linux系统在服务器端的崛起,Linux也在慢慢进军个人桌面系统领域.如果在使用Linux系统的终端时,对其颜色主题不是很满意,该怎么修改颜色的主题呢?今天笔者 ...

  8. 关于git提交的自己的理解

    包子不才,对于码云上的git的使用,自己的理解是 这个命令用于查看,哪些文件被修改了,以及修改了哪些地方, 这个命令用于增加你新添的文件,如果该文件已经存在,那么这一步则可以省略,随后就是commit ...

  9. UESTC 1817 Complete Building the Houses

    Complete Building the Houses Time Limit: 2000MS Memory Limit: 65535KB 64bit IO Format: %lld & %l ...

  10. 机器学习公开课笔记(3):Logistic回归

    Logistic 回归 通常是二元分类器(也可以用于多元分类),例如以下的分类问题 Email: spam / not spam Tumor: Malignant / benign 假设 (Hypot ...