那么为什么 switch case 使用冒号“:”?能不能写成这样——
switch(foo) {
case 1 {
do_stuff();
}
case 2 {
do_other_stuff();
}
case default {
do_default_stuff();
}
}
那么,为什么 ":" 与 switch 和 case 一起使用?
更一般地说,符号“:”在 C 和 C++ 中是什么意思?
我发现的唯一信息是它与goto
,我认为在 c 和 cpp 中不再使用太多。
C 和 C++ 语法中通常使用冒号来表示标签:执行可以跳转到的位置,该位置不是由显式块确定的。
这就是我的意思。在if
语句中,执行将跳过第一个块或else
块。在这两种情况下,都会跳转整个块。在while
循环中,执行跳转到块开始之前,或者break
在条件语句/失败的情况下,跳转到块外。
基本上,在 C 和 C++ 中的大多数跳跃都是基于块和关键字发生的。
Agoto
可以跳转到函数内的任何任意标签(C++ 有关于您可以“任意”跳转的程度),而不管块定义如何。虽然一个switch
语句只能跳转到case/default
它自己的块内的不同位置,并且只能跳转到一个这样的位置,但这些位置不会创建作用域块(就像我们有时希望它们那样)。这些位置没有定义独占代码段;执行直接通过标签(这就是为什么break
语句通常与 一起使用case/default
)。
简而言之,与普通的 C 或 C++ 块结构相比,case/default
行为更像标记goto
。因此,它们使用相同的语法来表示它们:冒号。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句