C 和 C++ 中的符号“:”是什么意思?

路西夫

那么为什么 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章