それでは変数のスコープをよりよく理解できる次のおもしろ問題にチャレンジしてみましょう。

cin>>aをつかって変数aに数値7を格納してみます ただしこのプログラムでは5つのaの変数宣言が行われています 一体どの変数aに数値7は格納されるのでしょうか?

solarplexuss


「今日は わたくし solarplexussが


変数宣言された変数の使用可能範囲(スコープ)


がどうなっているか?


変数のスコープ問題にチャレンジしてみま~す。


ドキドキします。



ピロリロリ~ン


変数のスコープ問題の登場です



🐣変数のスコープ問題🐤


cin>>aを使って数値7を変数aに格納してみます


ただし、このプログラムではaの変数宣言が5つ行われています


どの変数aに数値7は格納されるでしょうか?



#include <iostream>


using namespace std;


int a = 100;


void f(int a) {


cout <<a << "をとりこみました。\n";


}


int main() {


cout << "入力した数値は" << a << "です。\n";


int a = 1000;

int b;

int c;


cout << "何か数値を入力してください。\n";


cin >>a;


f(a);


cout << "入力した数値は" << a << "です。\n";



for (b = 0; b<2; b++) {

int a = 10000;


for (c = 0; c<2; c++) {

int a = 100000;


cout << "入力した数値は" << a << "です。\n";


}


cout << "入力した数値は" << a << "です。\n";


}


cout << "入力した数値は" << a << "です。\n";

return 0;


}


ビルド実行結果


入力した数値は100です

何か数値を入力してください。

7(と入力すると)

7を取りこみました

入力した数値は7です

入力した数値は100000です

入力した数値は100000です

入力した数値は10000です

入力した数値は100000です

入力した数値は100000です

入力した数値は10000です

入力した数値は7です


さあ どうしてこのような


ビルド実行結果になったのでしょうか?


solarplexuss


「?????


はあ?


ホワァ~イ??


なにこれ???


aの変数宣言が5つ?


aの変数宣言は


int a=100;

int a=1000;

int a=10000;

int a=100000;


の4つしかない?


と思ったら


自作関数


void f(int a){


cout <<a << "をとりこみました。\n";

}


の中で


変数宣言 int a;


がおこなわれているから


全部で


aの変数宣言が5つあるってことになるのかいな


cin>>a;



おこなわれて


コマンドプロンプト画面から7をうちこんだら


数値7はどの変数宣言によって作成されたaに格納されるのかな?


cin>>a;をつかって数値7を変数aに格納するには


まず


cin>>a;が使われる前に


事前に


数値7を格納するために


変数宣言 int a;が行われている必要があったっけ~?


それとそれと・・・


確かcinをつかって


変数aに数値7を格納するとき


int a;


aの変数宣言されている必要がありますが


int a=10;


aの変数宣言,初期化がおこなわれて


aに数値10が代入されていても


cin>>a;をつかって変数aに数値7を格納できるんです


すごいですよね。


つまり


cin>>a;をつかって変数aに数値を格納するとき


int a=8;

int a=888;

int a=1028;

int a=10022;


のように


すでに変数aに数値が代入され初期化されていても


代わりに変数aに数値7を格納できるんでした。


なぜなら


これは


次のプログラムをみてもわかるように👉」


#include <iostream>


using namespace std;


int main(){


int a=2;


cout <<a <<"\n";


a=5;


cout <<a <<"\n";


return 0;


}


ビルド実行結果


2

5


solarplexuss


「👉

変数aに数値2が格納されているのを


変数aに数値5が格納されている状態に変更するのと


同じことだからでした


ここから先の解説は・・・


やっぱり てんCとソーラー呼ぼうっと🌻」


  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る