この非常に単純な質問で申し訳ありませんが、私が読んでいる本でこの例を理解できないようです:
void f5()
{
int x;
{
int y;
}
}
周囲のブレースは何のint y
ためにありますか? 好きな場所にブレースを配置できますか? もしそうなら、いつ、なぜそうするのですか、それともこれはただの間違いですか?
この非常に単純な質問で申し訳ありませんが、私が読んでいる本でこの例を理解できないようです:
void f5()
{
int x;
{
int y;
}
}
周囲のブレースは何のint y
ためにありますか? 好きな場所にブレースを配置できますか? もしそうなら、いつ、なぜそうするのですか、それともこれはただの間違いですか?
このような中かっこは、中かっこ内のコードが別のスコープにあることを示しています。中かっこの外で y にアクセスしようとすると、エラーが発生します。
これは、変数のスコープの問題です。例:
void f5()
{
int x = 1;
{
int y = 3;
y = y + x; // works
x = x + y; // works
}
y = y + x; // fails
x = x + y; // fails
}
中括弧はスコープを示し、変数xは中括弧のスコープ内に表示されますが、yは中括弧スコープの外側には表示されません。
範囲を定義しています。変数 Y は中かっこの外ではアクセスできません。
中括弧はスコープレベルを定義します。中かっこ以外はy
使用できません。
スコープ出口で、内部オブジェクトが破棄されます。たとえば、クリティカルセクションを中かっこで囲み、そこにロックオブジェクトを作成できます。そうすれば、ロックを解除するのを忘れることを心配する必要はありません。スコープを終了すると、通常または例外のために、デストラクタが自動的に呼び出されます。
それはエラーのように見えます(コンテキストがわからない)
値yを中括弧の内側に囲んでいるため、中括弧の外側では使用できません。
もちろん、彼らがスコープを説明しようとしているのであれば、それは有効なコードである可能性があります