相关疑难解决方法(0)

Switch语句:必须默认为最后一种情况?

请考虑以下switch声明:

switch( value )
{
  case 1:
    return 1;
  default:
    value++;
    // fall-through
  case 2:
    return value * 2;
}
Run Code Online (Sandbox Code Playgroud)

此代码编译,但它对C90/C99有效(=已定义的行为)?我从未见过默认情况不是最后一种情况的代码.

编辑:
正如Jon CageKillianDS所写:这是非常丑陋和令人困惑的代码,我很清楚它.我只对一般语法(它定义了吗?)和预期输出感兴趣.

c switch-statement

168
推荐指数
8
解决办法
10万
查看次数

在循环封闭的开关块中中断和继续

所以我有一些如下所示的 C# 代码:

while(condition)
{
    switch(anumber)
    {
        case 0:
            //do something
            break;
        case 1:
            //do something
            break;
        //and so on
    }
}
Run Code Online (Sandbox Code Playgroud)

作为一名编程新手,我最近将关键字添加到continue了我的词汇表中。经过一些研究后,我发现了这一点:

continue 语句与封闭循环相关

所以我的代码也应该像这样工作:

while(condition)
{
    switch(anumber)
    {
        case 0:
            //do something
            continue;
        //and so on
    }
}
Run Code Online (Sandbox Code Playgroud)

但编写不产生编译器错误的代码并不是一切。continue在循环封闭的开关块中使用是一个好主意吗?例如,在性能方面是否有任何差异,或者这只是两种语法上不同但在其他方面非常相似的方法来实现相同的结果?

c# loops switch-statement

1
推荐指数
1
解决办法
1486
查看次数

标签 统计

switch-statement ×2

c ×1

c# ×1

loops ×1