c – case-switch是否像这样工作?

我今天遇到了一个代码转换代码,看到它是如何工作的,有点惊讶.代码是:
switch (blah)
{
case a:
  break;
case b:
  break;
case c:
case d:
case e: 
  {
    /* code here */
  }
  break;
default :
  return;
}

令我惊讶的是,在变量为c的情况下,路径进入了“此处代码”段.我同意在案例开关的c部分结束时没有中断,但我会想象它会通过认值.当你降落在一个案例时:行,是不是检查你当前的值是否与特定情况相符,然后只让你进入特定的段?否则案件有什么意义?

解决方法

这称为案例落实,是一种理想的行为.它允许您在案例之间共享代码.

如何使用案例直通行为的示例:

switch(blah)
{
case a:
  function1();
case b:
  function2();
case c:
  function3();
  break;
default:
  break;
}

如果在blah == a时输入开关,则执行function1(),function2()和function3().

如果您不希望出现此行为,可以通过包含break语句来选择退出.

switch(blah)
{
case a:
  function1();
  break;
case b:
  function2();
  break;
case c:
  function3();
  break;
default:
  break;
}

switch语句的工作方式是(或多或少)执行goto跳转到case标签,并从那一点继续运行.当执行中断时,它会离开开关块.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...