请考虑以下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 Cage和KillianDS所写:这是非常丑陋和令人困惑的代码,我很清楚它.我只对一般语法(它定义了吗?)和预期输出感兴趣.
所以我有一些如下所示的 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在循环封闭的开关块中使用是一个好主意吗?例如,在性能方面是否有任何差异,或者这只是两种语法上不同但在其他方面非常相似的方法来实现相同的结果?