複数の命令文をif文によって実行するにはブロック{}でくくります  

アレサ 「さて、if文において


if(1)の場合はif(1)に続く命令文は実行され


if(0)の場合はif(1)に続く命令文は実行されません。


では


if(1)やif(0)に影響をうけるのは、どの命令文まででしょうか?


if(1)命令文;、if(0)命令文;では


セミコロン;で区切られた前の命令文までが


if(1)やif(0)の影響をうけます。


次のプログラムで確認してみましょう。


#include <stdio.h>


int main(void){


if (1)

printf("らっき~\n");


/* この printf("らっき~\n"); の命令文までがif(1)の影響をうけます。*/


printf("やっほー\n");

/*この printf("やっほー\n"); の命令文はif(1)に関係なく実行されます。*/


if(0)

printf("らっぴ~\n");


/*この printf("らっぴ~\n"); の命令文までがif(0)の影響をうけます。のでこの命令文は実行されません。*/


printf("わっほうー\n");

/*この printf("わっほうー\n"); の命令文はif(0)に関係なく実行されます。*/


return 0;


}

コンパイル結果

らっき~

やっほー

わっほうー


このようにif(1)やif(0)は

if(1)やif(0)につづく

1つの命令文にしか影響をあたえることはできません。


それでは


一度に

if(1)やif(0)の影響を複数の命令文に与えるにはどうしたらよいでしょうか?


その場合はつぎのプログラムのように


if(1)やif(0)につづく複数の命令文を ブロック{ }で括ります。



#include <stdio.h>


int main(void){


if(1){

printf("らっき~\n");

printf("やっほー\n");

}

if(0){

printf("らっぴ~\n");

printf("わっほうー\n");

}

return 0;

}

コンパイル結果


らっき~

やっほー


{ }でくくられた


if(1)の影響を受けた次の2つの命令文


printf("らっき~\n");

printf("やっほー\n");


は実行され


{ }でくくられた


if(0)の影響を受けた次の2つの命令文


printf("らっぴ~\n");

printf("わっほうー\n");


は実行されません。


ではっ 次のプログラムはどのような構造になっているでしょうか


_(^^)わかるかな


#include <stdio.h>


int main(void){


if(1){

printf("らっき~\n");

printf("やっほー\n");


if(0){

printf("らっぴ~\n");

printf("わっほうー\n");

}

}

return 0;

}



このreturn 0;の下に括弧はいつもどおり1つ並んでいます。


return 0;の上には括弧は2つ並んでいます。


面白いですね。


このプログラムの構造は


まずint main(void){     return 0;}によって


次の命令文


if(1){

printf("らっき~\n");

printf("やっほー\n");


if(0){

printf("らっぴ~\n");

printf("わっほうー\n");

}

}

が囲まれています。


さらにif(1){ }によって


printf("らっき~\n");

printf("やっほー\n");


if(0){

printf("らっぴ~\n");

printf("わっほうー\n");

}


の命令文が囲まれています。


ここまでくると大分構造がみえてきました(^^)/


つまり

if(1){ }により、


{ }のなかの命令文


printf("らっき~\n");

printf("やっほー\n");


if(0){

printf("らっぴ~\n");

printf("わっほうー\n");

}

は実行されます。


その際

printf("らっき~\n");

printf("やっほー\n");

はそのまま実行されますが


if(0){

printf("らっぴ~\n");

printf("わっほうー\n");

}


のif(0){ }の{ }の中の命令文はif(0)により実行されず


コンパイル結果は

らっき~

やっほー

となるわけです。


このように複数の命令文をブロック{}でくくるという考え方は


プログラムのいたるところででてきます😊」 

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

作者を応援しよう!

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

応援したユーザー

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