次のswitch
ステートメントを検討してください。
switch( value )
{
case 1:
return 1;
default:
value++;
// fall-through
case 2:
return value * 2;
}
このコードはコンパイルされますが、C90 / C99に対して有効(=定義済みの動作)ですか?デフォルトのケースが最後のケースではないコードを見たことがありません。
編集:
として、ジョン・ケージとKillianDS書き込み:これは本当に醜いと混乱のコードであり、私はそれをよく知っています。一般的な構文(定義されているか?)と期待される出力に興味があります。
goto
は悪ではありません。貨物カルト信者はいます!goto
これは非常に邪悪であり、コードを実際に読めない状態にするので、人々がどの程度極端に回避できるか想像できませんでした。
goto
主にfinally
、停止時にリソース(ファイル、メモリ)を解放する必要がある関数の句のようなものをシミュレートするために使用し、すべてのエラーの場合に繰り返しリストを繰り返しますが、読みやすさの助けにはfree
なりclose
ません。goto
回避したいけれどもできない1つの使用法がありますが、ループから抜け出したくてswitch
、そのループ内にいるときです。