constを変数宣言の前に用いて変数宣言、初期化を行うと作製された変数に格納されているデータを変更することはできません  その1

ソーラー「マックス どこに行ったのかな~😊」


アレサ「そうですの」


ソーラー「しょうがないな~ ぼくらは数値計算の基本事項でも


学んでおこうかな」


アレサ「はい 今日はconstについて学んでみたいと思いますの」


ソーラー「では さっそく次のプログラムを見てみようかな


#include<stdio.h>


int main(void)

{


const int a = 3;

printf("%d\n",a);


return 0;

}


(EAZY IDECの場合)

コンパイル結果



(Visual studioの場合)


実行結果


3


ソーラー「const int a = 3;


に注目してよ。


変数宣言、初期化の


int a=3;


の前に


constが用いられています。


このconstは英語で定数という意味なんだ。


const int a = 3;


が行われると何が起こるのかというと


変数aに格納されている値は3のまま変更することはできなくなるんだ。


だから


次のプログラムのように


変数aに格納されている値を3から6に変更しようとすると👉」



#include<stdio.h>


int main(void)

{


const int a = 3;


a=6;//変数aに格納されている値を3から6に変更しようとしています

printf("%d\n",a);


return 0;

}



(EAZY IDECの場合)

コンパイル結果



ファイル「C:/Users/solarplexuss/AppData/Local/EasyIDEC/project/hhhhhhhh/main.c」の

「8行目」で記述エラーを発見しました。

警告

assignment of read-only location

(意味は


"読み込み専用となっているメモリにデータを新たに割り当てようとしている"


となっています


             solarplexuss)



(Visual studioの場合)


ビルド実行結果



エラー (アクティブ) E0137 式は変更可能な左辺値である必要があります

エラー C3892 'a': const である変数へは割り当てることはできません


ソーラー

「👉プログラムの実行ができないような仕組みとなっています。


つまり 変数aに格納されている数値3を変更することができない、


変数aは常に定数3を意味していることになるんだね。」



では


const int a = 3;


でなく


const int a;


a=3;


とプログラムを記述したらどうなるかな


確かめてみようよ。


#include<stdio.h>


int main(void)

{


const int a;


a=3;//変数aに格納されている値を3から6に変更しようとしています


printf("%d\n", a);


return 0;

}


ソーラー「それでは(^_-)-☆ コンパイルっ」




(EAZY IDECの場合)

コンパイル結果


ファイル「C:/Users/solarplexuss/AppData/Local/EasyIDEC/project/hhhhhhhh/main.c」の

「8行目」で記述エラーを発見しました。

警告

assignment of read-only location

(意味は


"読み込み専用となっているメモリにデータを新たに割り当てようとしている"


となっています


             solarplexuss)


(Visual studioの場合)


ビルド実行結果


エラー C2734 'a' : 'const' オブジェクトが 'extern' でない場合、初期化する必要があります。

エラー C3892 'a': const である変数へは割り当てることはできません

エラー (アクティブ) E0257 const 変数 "a" には初期化子が必要です

エラー (アクティブ) E0137 式は変更可能な左辺値である必要があります


ソーラー「このプログラムを実行すると


Visual studioでは


const int a;


を初期化するように


エラー文が出ているね。


また


const int a;


により作製された変数aには


新たに数値を格納することができないとも


エラー文が表示されているね」


アレサ「ソーラーさん このconstはいろいろなプログラムで


記述されているのをみかけます」


ソーラー「そうだね。 これからどんなところで使用されるか楽しみだね」



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

作者を応援しよう!

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

応援したユーザー

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