关于Switch case条件语句的另类用法
      今天在拜读一位前辈的程序时,遇到了这样一段程序:
/***************************/
switch(operation)
{
case Dir_CCW_Cycle: // 语句1
case Dir_CW_Cycle:
{
Dir = (operation == Dir_CW_Cycle)?Dir_CW_Cycle:Dir_CW_Cycle; //语句2
break;
}
default:
break;
}
/**************************/
      第一眼看到这个程序以后觉得语句1没什么执行的语句何必要写,语句2是一个必然的结果,何必要判断呢。但是真正运行了以后发现了程序的真正奥妙所在,不得不说C语言真是一门神奇的语言。再仔细看看,发现语句一之后少一个break语句。难道奥妙真的在这里吗?
       哈哈哈,没错就是因为此处少了一个break的原因。查过C语言的书籍之后,这里的做法是为了让多个分支共享相同的语句,故意省略break;也不失为一种好的处理办法,但是在使用的时候必须指出,以防止后来人疑惑。
这是一段代码验证:
 #include "stdio.h"

 #define Dir_CCW_Cycle 0
#define Dir_CW_Cycle 1 void test(int operation)
{
int Dir = ;
switch(operation)
{
case Dir_CCW_Cycle: case Dir_CW_Cycle:
{
Dir = (operation == Dir_CW_Cycle)?Dir_CW_Cycle:Dir_CCW_Cycle;
break;
}
default:
break;
}
if(Dir == Dir_CW_Cycle) printf("Dir_CW_Cycle\n");
if(Dir == Dir_CCW_Cycle) printf("Dir_CCW_Cycle\n");
}
void main (void)
{
test(Dir_CCW_Cycle);
test(Dir_CW_Cycle);
}

运行以后结果如下:

关于Switch case条件语句中无break的用法的更多相关文章

  1. shell脚本中的case条件语句介绍和使用案例

    #前言:这篇我们接着写shell的另外一个条件语句case,上篇讲解了if条件语句.case条件语句我们常用于实现系统服务启动脚本等场景,case条件语句也相当于if条件语句多分支结构,多个选择,ca ...

  2. JavaScript case 条件语句

    JavaScript case 条件语句 示例 switch(name){ case '1': age = 123; break; case '2' age = 456; break; default ...

  3. 【2017-2-23】C#switch case分支语句,for循环语句

    switch case分支语句 switch(一个变量值) { case 值:要执行的代码段;break; case 值:要执行的代码段;break; … default:代码段;break;(def ...

  4. 『忘了再学』Shell流程控制 — 35、多分支case条件语句

    目录 1.case条件语句介绍 2.case语句需要注意的内容 3.练习 示例1 示例2 1.case条件语句介绍 case语句和if-elif-else语句一样都是多分支条件语句,不过和if多分支条 ...

  5. SQL语句中 INNER JOIN的用法!

    一.SQL语句中  INNER JOIN的用法? 1.INNER JOIN的作用? 可以在两个或者更多的表中获取结果,得出一张新表. [隐式内连接] 表一 car  购物车 表二 user 用户 发现 ...

  6. SQL2008 'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。

    'OFFSET' 附近有语法错误.在 FETCH 语句中选项 NEXT 的用法无效. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出 ...

  7. Entity Framework 异常: 'OFFSET' 附近有语法错误。\r\n在 FETCH 语句中选项 NEXT 的用法无效。

    在使用 EF 的时候,突然发现更新后在服务器中运行出错,异常信息主要包含以下信息: 'OFFSET' 附近有语法错误.\r\n在 FETCH 语句中选项 NEXT 的用法无效.\r\n关键字 'AS' ...

  8. 'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。

    在使用asp.net core的时候,采用take().skip()分页的时候报如下错误: SqlException: 'OFFSET' 附近有语法错误. 在 FETCH 语句中选项 NEXT 的用法 ...

  9. Entity Framework 异常: 'OFFSET' 附近有语法错误。\r\n在 FETCH 语句中选项 NEXT 的用法无效。\r\n关键字 'AS' 附近有语法错误。

    在使用 EF 的时候,突然发现更新后在服务器中运行出错,异常信息主要包含以下信息: 'OFFSET' 附近有语法错误.\r\n在 FETCH 语句中选项 NEXT 的用法无效.\r\n关键字 'AS' ...

随机推荐

  1. 【20171104中】chrome自动刷新网页

    target:刷访问量 tools:chrome / url start: s1:百度知道,https://zhidao.baidu.com/question/750134067096113532.h ...

  2. 暑假练习赛 007 C - OCR

    C - OCR Description standard input/outputStatements Optical Character Recognition (OCR) is one of th ...

  3. SSH服务详解

    第1章 SSH服务 1.1 SSH服务协议说明 SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Group )制定:在进行数 ...

  4. struts2运行过程(图解)

    .................................................................................................... ...

  5. python添加自定义cookies

    import cookielib,urllib2 class AddCookieHandler(urllib2.BaseHandler): def __init__(self,cookieValue) ...

  6. 简单聊聊java中如何判定一个对象可回收

    背景 说到java的特性,其中一个最重要的特性便是java通过new在堆中分配给对象的内存,不需要程序员主动去释放,而是由java虚拟机自动的回收.这也是java和C++的主要区别之一:那么虚拟机是如 ...

  7. 使用cobbler批量安装操作系统(基于Centos7.x )

    1.1 cobbler简介 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等. Cobbler可以使 ...

  8. spring配置文件一般结构

         xml schema:schema在文档根节点当中通过xmlns对文档当中的命名空间进行申明,第三行代码定义了默认命名空间用于spring bean的定义.xsi命名空间用于为每个文档中指定 ...

  9. Python之上下文管理

    http://www.cnblogs.com/coser/archive/2013/01/28/2880328.html 上下文管理协议为代码块提供包含初始化和清理操作的上下文环境.即便代码块发生异常 ...

  10. Android Testing Point

    The test application demonstrates these key points: An Android test is itself an Android application ...