Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C / C ++のswitchステートメントで変数を宣言できないのはなぜですか?


変数はswitchステートメントで宣言できます。それらを宣言し、switchステートメントの新しいスコープ内で使用する必要があります。たとえば、

#include<iostream>
using namespace std;

int main() {
   int i = 10;
   switch(i) {
      case 2:
      //some code
      break;
      case 10:{
         int x = 13;
         cout << x;
      }
   }
   return 0;
}

出力

これにより、出力が得られます:

13

オープンで変数を宣言しようとすると、エラーが発生する可能性があります。ケースラベルにジャンプするのは、gotoを使用するのと同じであるため、同じスコープ内にいる間は、ローカル変数の宣言をジャンプすることはできません。そのままで、その範囲内のどこかで使用している可能性があります。


  1. ローカル変数のメモリは、C / C ++のスコープ外でアクセスできますか?

    スコープ外のローカル変数のメモリにアクセスできる可能性がある例を見てみましょう。 例 #include<iostream> int* foo() {    int x = 3;    return &x; } int main() {    int* address = foo();    cout << *address;    *address = 12;    cout << *address; } 出力 これにより出力

  2. C++の変数のスコープ

    スコープはプログラムの領域であり、大まかに言えば、変数を宣言できる場所は3つあります- ローカル変数と呼ばれる関数またはブロックの内部 仮パラメータと呼ばれる関数パラメータの定義。 グローバル変数と呼ばれるすべての関数の外。 ローカル変数は、その関数またはコードブロック内にあるステートメントでのみ使用できます。ローカル変数は、それ自体で機能することは知られていません。 例 #include <iostream> using namespace std; int main () {    // Local variable declaration: &nb