このエピソードあたりから統合開発環境Visual Studioと統合開発環境EAZY IDECの違いが明確にでてきます。

☆変数を初期化しないと 変数の中にモンスター(よくわからない数値)が格納されていて、 どしぇー ってなります。


             ☆変数を初期化しないと☆


   ☆ 変数の中にモンスター(よくわからない数値)が格納されていて、 ☆


           ☆  どしぇー ってなります。 ☆




ソーラー 「先程の変数をつかった練習問題のプログラムを


呼び出してみます。」 


#include <stdio.h>


int main(void)

{

int a,b;

a=12;

b=20;


a=b;


printf("りんごは%d円です。\n",a);

return 0;

}


プログラムの実行結果(EAZY IDECの場合)

プログラムの実行結果(Visual Studioの場合)


りんごは20円です。


ソーラー「そう、


a=12;

b=20;



変数a,bを初期化していました


ここで つぎのような勘違いをしたとします。


このプログラムの命令文


printf("りんごは%d円です。\n",a);


は 変数bはかかわってこないように見えるので


b=20;


と 変数bの初期化をしなくていいんだ~~(´▽`*)(*´▽`*)


やったね😊、GO GO!と


b=20;

を行うのを


つまり

変数bを初期化するために数値20を


変数bに


代入するのをやめてみたとします。


そのプログラムは下記のようになります。」


#include <stdio.h>


int main(void)

{

int a,b;

a=12;

a=b;


printf("りんごは%d円です。\n",a);

return 0;

}     

👆

みなさん じっくり このプログラムを ご覧ください


         変数bには数値が格納されていないのに

         変数bを変数aに代入しようとしています。

    

                    solarplexussより


ソーラー


「さあ このプログラムは正常に実行できるでしょうか?


楽しみですね・・・


みなさんはどうおもわれますか? うふふっ


では・・・このプログラムを・・・」


#include <stdio.h>


int main(void)

{

int a,b;

a=12;

a=b;


printf("りんごは%d円です。\n",a);

return 0;

}     


ソーラー「

😊😊

それっ 

こんぱいる!」


            

          [ プログラムを実行します ]



という文字が画面にあらわれ


実行されていくプログラム・・・


ニーモ 「わわっプログラムが実行されてるー」


ソーラー 「おおっ」


以下 プログラムの実行結果です




プログラムの実行結果(EAZY IDECの場合)(ソーラーさんたちが独自に使っている統合開発環境です)


りんごは1638280円です。

続行するには何かキーを押してください_




プログラムの実行結果(Visual Studio2018の場合)


エラー C4700 初期化されていないローカル変数 'b' が使用されます Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 7



プログラムの実行結果(Visual Studio2019の場合)


警告 C6001 初期化されていないメモリ 'b' を使用しています。 Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 7

エラー C4700 初期化されていないローカル変数 'b' が使用されます Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 7




とエラー文が表示され


プログラムの実行はできません。



ソーラー 「おおっすごい、すごい、


これはすごい\(^^)/ーーーーー。

(EAZY IDECの場合の)

1638280円はどこからでてきたんだー\(^^)/?」


ニーモ 「何かの間違いかしら(^^)?」


無邪気に喜ぶソーラーを嬉しそうにみつめるニーモ。


ソーラー 「うん、そうだね。


もう一回このプログラムを実行してみよっか。」


以下 再びプログラムを実行したときの結果です




プログラムの実行結果(EAZY IDECの場合)


りんごは1638280円です。

続行するには何かキーを押してください_




プログラムの実行結果(Visual Studio2018の場合)


エラー C4700 初期化されていないローカル変数 'b' が使用されます Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 7



プログラムの実行結果(Visual Studio2019の場合)


警告 C6001 初期化されていないメモリ 'b' を使用しています。 Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 7

エラー C4700 初期化されていないローカル変数 'b' が使用されます Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 7



Visual Studioの場合は


エラー文が表示され


プログラムの実行はできません。


Visual Studioは親切設計なので


変数が初期化されていないと


プログラムを実行することができない仕様となっています。





ソーラー 「やっぱり何かの間違いじゃない。


時間がたってもプログラムの実行結果はかわらないね。すごいなー。」


ニーモ 「ふん、ふん、ほんと、


(EAZY IDECの場合)


b=20;

と変数bに数値を代入するのをやめる


(bという変数を初期化しない)と


すごくでたらめな結果になったね。」


ソーラー 「ほんとですね。


(EAZY IDECの場合)

りんごは1638280円です。



プログラムの実行結果が表示されるのは



#include <stdio.h>


int main(void)

{

int a,b;

a=12;

a=b;


printf("りんごは%d円です。\n",a);

return 0;

}  

👆

このプログラムの中の命令文


a=b;


変数aに変数bの値を代入するところがあやしいね。


もともと変数bにはなにも数値を代入してなかったもんねー


printf("りんごは%d円です。\n",a);


の実行結果によくわからない数値がでてくるわけだ。」


ニーモ 「ねえ a=b;


つまり


変数aに変数bの値を代入して


りんごは1638280円です。


という結果がでたのなら、


変数bには1638280


が入っていたということかな?」


ふわっとニーモの体から光がきらめく。


ソーラー 「うーん、そうかも。


(詳しくは次のエピソードをご覧ください)


ここでわかったのは


int a,b;と変数宣言して


変数bを初期化しないと


変数bの中にはモンスター(よくわからない数値)がなかにはいってて、


どしぇーー


ってことになります。」


ニーモ 

「またひとつ新しい発見をしたわね。」











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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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