ローカル変数のスコープ(変数の使用可能な範囲)は そのローカル変数が宣言された{}(ブロック)内となります
複数のローカル変数のスコープ(変数宣言により作製された変数の使用可能な範囲)を考察してみましょう。
マックス「次のプログラムは~
むふふ
int a;
int b;
int c;
はmain関数のブロック{}内で変数宣言されているので
変数
a
b
c
は
main関数のローカル変数だ(^_-)-☆
はははあ 簡単だなあ~~」
#include <stdio.h>
int main(void){
int a;
int b;
int c;
for(a=1;a<3;a++)
{
for(b=1;b<4;b++)
{
for(c=1;c<5;c++)
{
printf("%d回目のご飯はNouvel de かつおです\n",c);
}
}
}
return 0;
}
ソーラー 「そうなんです。
int a;
int b;
int c;
はmain関数のブロック{}内で変数宣言されているので
変数a、b、cは
グローバル変数でなく
main関数のローカル変数なんです😊
ところで
ローカル変数宣言
int a;
int b;
int c;
によって作成された
ローカル変数a
ローカル変数b
ローカル変数c
のスコープ(変数の使用可能な範囲)は
どこからどこまでなのでしょうか?
ローカル変数は
ローカル変数が宣言されたブロック内が
スコープ(変数の使用可能な範囲)となります
ですので
ローカル変数a
ローカル変数b
ローカル変数c
のスコープ(変数の使用可能な範囲)は
main関数のブロック{}内の
👉と👈で示された範囲が
スコープ(変数の使用可能な範囲)
となります。」
#include <stdio.h>
int main(void){
int a;👉
int b;👉
int c;👉
for(a=1;a<3;a++)
{
for(b=1;b<4;b++)
{
for(c=1;c<5;c++)
{
printf("%d回目のご飯はNouvel de かつおです\n",c);
}
}
}
return 0;👈👈👈
}
このプログラムでは
for(a=1;a<3;a++)
for(b=1;b<4;b++)
for(c=1;c<5;c++)
が記述されている
同じブロック{}内で
先に
ローカル変数宣言
int a;
int b;
int c;
が行われているので
変数a
変数b
変数c
が変数宣言されていないので
for(a=1;a<3;a++)
for(b=1;b<4;b++)
for(c=1;c<5;c++)
のfor文
が機能しないということはないんですね。」
マックス「まあ そうだろう」
ソーラー「
for(a=1;a<3;a++)
for(b=1;b<4;b++)
for(c=1;c<5;c++)
は
事前に
変数a
変数b
変数c
が変数宣言されて作製されていないと
プログラムを実行した場合
プログラムの実行結果(EAZY IDECの場合)
aは定義されていません
bは定義されていません
cは定義されていません
ビルド実行結果(Visual Studioの場合)
識別子 "a" が定義されていません
識別子 "b" が定義されていません
識別子 "c" が定義されていません
と表示され機能しないのです
変数のスコープには注意する必要があるわけだね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます