C++ 在C++;,如果断裂;开关大小写块的关键字不存在,两个大小写均为“;b"&;默认值被执行

C++ 在C++;,如果断裂;开关大小写块的关键字不存在,两个大小写均为“;b"&;默认值被执行,c++,C++,C++: 你错过了一个案子之后的休息时间 B Default C不允许执行多于一个逻辑上不正确的情况,所以C语言编译器阻止。这两个是不同的语言。C的可能复制不允许转换case语句流入另一个case语句…它是一个非常常见的C++错误…所以C试图保护你。因此,您必须有一个中断在每个案例中.Hm。。如果input是a,为什么它会出现在开关的b中?答案很简单。C++和C语言不是同一种语言,它们实现了不同的规范。你为什么还要考虑比较他们的行为?请注意,你可以做goto default或goto cas

C++:


你错过了一个案子之后的休息时间

B
Default

C不允许执行多于一个逻辑上不正确的情况,所以C语言编译器阻止。

这两个是不同的语言。C的可能复制不允许转换case语句流入另一个case语句…它是一个非常常见的C++错误…所以C试图保护你。因此,您必须有一个
中断在每个
案例中
.Hm。。如果
input
a
,为什么它会出现在开关的
b
中?答案很简单。C++和C语言不是同一种语言,它们实现了不同的规范。你为什么还要考虑比较他们的行为?请注意,你可以做
goto default
goto case“c”
而不是
break
ing。我不知道“逻辑不正确”,它在某些情况下非常有用(没有双关语)。跳转语句(goto)不会给您带来任何编译错误,但可能会增加代码的复杂性,因此不是一个好的编程习惯。@Biffen:@JitendraPancholi我不是说goto,我是说case fallrough。
B
Default
bool condition = true;
string input = "a";
switch (input)
{
    case "b":
        if (condition)
        {
            Console.WriteLine("B");
        }
        break; // You missed break;
    default:
        Console.WriteLine("Default");
        break;
}