C语言退出多层嵌套循环技巧

由于break语句只能影响它的最内层循环,要想立即从深层嵌套循环中退出,有哪些方法呢?

1、使用goto语句:

while(condition1) {
    while(condition2) {
        while(condition3) {
            if(some disaster)
                goto quit;
        }
    }
}
quit:;

要想在这种情况下避免使用goto语句,可以考虑以下两种方案:

2、设置状态标志:

当你希望退出所有循环时设置一个状态标志,但这个标志在每个循环中都必须进行测试:

enum{EXIT, OK}status;
...
status = OK;
while(status == OK && condition1) {
    while(status == OK && condition2) {
        while(condition3) {
            if(some disaster)
                status = EXIT;
                break;
        }
    }
}

3、使用函数返回:

把所有的循环都放在一个单独的函数里,当灾难降临在最内层的循环的时候,可以使用return语句离开这个函数

时间: 2024-10-30 16:19:48

C语言退出多层嵌套循环技巧的相关文章

专升本-关于C语言for语句嵌套循环的使用

问题描述 关于C语言for语句嵌套循环的使用 马上就要考专升本了,可是关于for语句的循环还是不是很清晰,for(式1:式2:式3) 语句:是先执行式1然后式2,然后无论真假都执行语句么?再返回式3.另求一套短时间突击c语言的应试方法.谢大神了. 解决方案 当然不是,只有2为真才会执行循环体,执行完循环体再执行3,并且再判断2 for (int i = 0; i < 10; i++) { ... } 等价 int i = 0; for (;i < 10;) { ... i++; } 或者等价

Python编程语言的35个与众不同之处(语言特征和使用技巧)_python

一.Python介绍 从我开始学习Python时我就决定维护一个经常使用的"窍门"列表.不论何时当我看到一段让我觉得"酷,这样也行!"的代码时(在一个例子中.在StackOverflow.在开源码软件中,等等),我会尝试它直到理解它,然后把它添加到列表中.这篇文章是清理过列表的一部分.如果你是一个有经验的Python程序员,尽管你可能已经知道一些,但你仍能发现一些你不知道的.如果你是一个正在学习Python的C.C++或Java程序员,或者刚开始学习编程,那么你会像

C语言宏定义使用技巧

写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等.下面列举一些成熟软件中常用得宏定义-- 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植. typedef unsigned char boolean: /* Boolean value type. */ typedef unsigned l

PHP判断浏览器、判断语言代码分享_php技巧

PHP编程中经常需要用到一些服务器的一些资料,特把$_SERVER的详细参数整理下,方便以后使用. 判断浏览器类型 复制代码 代码如下: //判断类型   <?php if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 8.0"))  echo "Internet Explorer 8.0";  else if(strpos($_SERVER["HTTP_USER_AGENT"],&q

在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出_实用技巧

但是,系统日志中可能会记录类似于以下内容的事件消息: 事件类型:警告 事件来源:W3SVC 事件类别:无 事件 ID: 1009 日期: 9/28/2005 时间:3:18:11 PM 用户:N/A 计算机:IIS-SERVER 描述: 为应用程序池"DefaultAppPool"提供服务的进程意外终止.进程 ID 是"2548".进程退出代码是"0xe0434f4d". 而且,应用程序日志中可能会记录类似于以下内容的事件消息: 事件类型:错误

浅谈关于JavaScript的语言特性分析_javascript技巧

前言在JavaScript中,作用域.上下文.闭包.函数等算是精华中的精华了.对于初级JSer来说,是进阶必备.对于前端攻城师来说,只有静下心来,理解了这些精华,才能写出优雅的代码. 本文旨在总结容易忘记的重要知识,不会讲基本的概念.如果对基本知识不太熟悉,就去翻下< JavaScript权威指南>吧~ 语言特性函数表达式 先看代码段: 复制代码 代码如下: [javascript] view plaincopyprint?var f = function foo(){      return

一波C语言字符数组实用技巧集锦_C 语言

字符数组倒序 #include <stdio.h> void daoxu(char str[]){ int i; char temp; for(i = 0; i < strlen(str) / 2 ; i ++){ temp = str[i]; str[i] = str[strlen(str) - i-1]; str[strlen(str) - i-1] = temp; } } 单词计数    int wordCount(char str[]){ int i; int count = 0

PHP中使用gettext来支持多语言的方法_php技巧

我们今天用一个简单的实例说明一下在PHP中的getText的用法(getText是一系列的工具和库函数,帮助程序员和翻译人员开发多语言软件的), 从而实现PHP的i18n. 现在, 我们假设要显示一个返回主页的link: 复制代码 代码如下: //home.php: $str = 'home'; print <<<HTML <a href="#">{$str}</a> HTML; 下面开启我们多语言的开发之旅: 创建pot文件,pot是Port

PHP检测用户语言的方法_php技巧

本文实例讲述了PHP检测用户语言的方法.分享给大家供大家参考.具体如下: function getPreferredLanguage() { $langs = array(); if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { // break up string into pieces (languages and q factors) preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\