スイッチのケースでは、変数を定義することはできませんか?

1.エラー

スイッチ(何か)

{

  ケース:

    int型のA = 0;

    ブレーク;

  デフォルト:

    ブレーク;  

}

結果は与えられました:

エラー:この場合、ラベルにswitch文からジャンプすることはできません......

 

2.エラーの原因

:基本的な理由は、C ++のルールがあるということです勉強があれば任意の範囲では、変数の初期化ステートメント、初期化ステートメントをスキップすることができない、実行してください

初期化したら、ここで重点は、変数のスコープでスキップすることはできませんが、スコープ全体をスキップすることができます!

例えば、初期化ステートメントのint型のA = 0、エラー時にそれらが入力されているが、リスクが実行されていないので、ここでスコープがあるが!

 

変更する方法3。

①int型入れ、スイッチはケースとの間を移動します:

スイッチ(何か)

{

  int型;

  ケース:

    = 0;

    ブレーク;

  デフォルト:

    ブレーク;  

}

②ケース+スコープシンボルで{}

スイッチ(何か)

{

  ケース:

  {

    int型のA = 0;

    ブレーク;

  }

  デフォルト:

    ブレーク;  

}

これら二つの変更は、単にスコープに行くことが保証され、ステートメントを初期化するために実行されます!

 

4. TrueまたはFalse

スイッチ(何か)

{

  ケース:

    int型;

    ブレーク;

  ケースB:

    = 5;

    ブレーク;

  デフォルト:

    ブレーク;  

}

C ++では、コンパイルされているため、正しく実行:ちょうど定義int型、および初期化されず、上記の規則に違反していません!

コンパイル時間割り当てがBケースする場合は、Aは、{}スイッチの全範囲、何の問題である場合コンパイル時に、コンパイラはスペースを割り当てます。

 

定義と初期化5.声明:

①メモリ空間を割り当てていない変数を宣言します。

②定義された変数は、INT、コンパイル時には、メモリを割り当てられるが、任意の実行可能なコードを生成しません

コンパイル時に文だけ便利な時間をスキップすることによって行われたときには重要ではありませんint型そう!

存在する場合③変数スペースの割り当てと初期化を(スペース割り当て、割り当て実行時の初期化はコンパイル時)初期化し、実行する必要があります!

 

おすすめ

転載: www.cnblogs.com/Younger-Zhang/p/11316290.html