44

C/Objective-C/C++ のすべての switch case ステートメントで中括弧を使用しています

数分前まで、break;中括弧内にステートメントを含めることが良い習慣なのか悪い習慣なのかを考えたことがありませんでした。それは問題ではないと思いますが、それでも尋ねる価値があると思います。

    switch (foo) {
        case 1: {
            // stuff
            break;
        }

        default: {
            break;
        }
    }

    switch (foo) {
        case 1: {
            // stuff
        } break;

        default: {
            // stuff
        } break;
    }
4

5 に答える 5

37

簡単な答え: 関係ありません。

于 2011-09-10T20:30:53.213 に答える
13

もう少し詳しい回答をお願いします...

公式の C99 仕様では、break ステートメントについて次のように述べられています。

break ステートメントは、囲んでいる最小の switch または iteration ステートメントの実行を終了します。

だから、それは本当に問題ではありません。私に関しては、波括弧の中にブレークを入れました。中かっこ内の他の場所にも区切りを入れることができるため、中かっこ内にも最後の区切りを入れる方がより論理的です。returnステートメントのようなものです。

于 2011-10-26T13:29:54.797 に答える
5

中括弧とスイッチを組み合わせる方法には、さまざまなコーディング スタイルがたくさんあります。例では、私が好むものを使用します。ステートメントは、場所に関係なく、最もbreak内側のループまたは switch ステートメントから抜け出します。たとえば、1 つのケースに対して複数のブレークを設定できます。

switch (foo) {
case 1:
    {
        if (bar)
            break;
        bar = 1;
        ...
    }
    break;
}

ケースはどこにでも置くことができることに注意してください。ケース ラベルは goto ラベルによく似ています。たまたま次のようなことを書いたことがあります。

switch (foo) {
case 1:
    bar = 1;
    if (0) {
case 2:
        bar = 2;
    }
    ...
    break;
}

しかし、注意して使用してください。

于 2011-09-10T20:43:26.807 に答える
1

レキシカルスコープで必要でない限り、最初からカーリーは必要ないでしょう。私には最初の例の方が適切に見えますが、本当の答えは好みの問題だと思います。

于 2011-09-10T20:31:37.033 に答える