今回から実践的なもの以外は省略していこうと思います。
ていうかソースコード実際に書かないと勉強したきがしない。
#include <stdio.h>
int main(void){
int a = 10;
double b = 3;
printf("結果は%f\n",a / b);
}
実行結果:
結果は3.333333 続行するには何かキーを押してください . . .
このままだと問題なくコンパイルできますね。
ですが、こうすると…
#include <stdio.h>
int main(void){
int a = 10;
{
double b = 3;
printf("結果は%f\n",a / b); //①
}
printf("bの値は%f\n",b); //②
}
①は問題なく実行され、結果も表示できます。
しかし、②はコンパイルエラーで表示できません。
これは関数の有効範囲(スコープ)が原因です。
変数を宣言したブロック({~})内のみがスコープとなります。
つまり、
int main(void){
int a = 10; //aを宣言、スコープを開始
{
double b = 3; //bを宣言、スコープを開始
printf("結果は%f\n",a / b); //①ここはaとb両方のスコープ。
} //bのスコープ終了
printf("bの値は%f\n",b); //②ここはbのスコープではない。
} //aのスコープ終了
となります。
