我今天遇到了一个代码转换代码,看到它是如何工作的,有点惊讶.代码是:
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标签,并从那一点继续运行.当执行中断时,它会离开开关块.