我遇到了一些类似下面的代码。我相信我理解它的作用,但我不知道它为什么会起作用,为什么它不是语法错误。我认为if
会创建一个新的范围并打破switch语句。 C / C ++编译器如何解析它?
switch(num) {
case 1:
if (cond) {
case 2:
foo();
break;
} else {
bar();
break;
}
case 3:
...
作为参考,这是为不同的起始值调用的内容:
(num = 1, cond = true ) -> foo()
(num = 2, cond = true ) -> foo()
(num = 1, cond = false) -> bar()
(num = 2, cond = false) -> foo()
有趣的是,这似乎不适用于Java。