それでは for文の8つの基本パターンで遊んでみる。

前回は失礼いたしました。


再開いたします。


サンプルプログラムはこちらでした。


#include <stdio.h>


int main(void){

int a;

for(a=1; a<=3; a++){

printf("このprintfは%d回目です\n",a);

}

return 0;

}



このプログラムにおいて


for(a=1; a<=3; a++)のところを


次の


for(;; ) (Visual Studioでは実行できません)

for(; ; a++) (Visual Studioでは実行できません)

for(; a<=3;) (Visual Studioでは実行できません)

for(a=1; ; )

for(; a<=3; a++) (Visual Studioでは実行できません)

for(a=1; a<=3; )

for(a=1;; a++)

for(a=1; a<=3; a++)


の別の形式に置き換えた場合


この8つのfor文のパターンの中に


1回も


printf("このprintfは%d回目です\n",a);


を実行しないものがあります。


それは・・・


どれだか 予想がつきますか?


わっかんな~~い💖 ですか? きゃはっ


う~ん それでは


とりあえず


次から次へと


この8つのパターンを1つずつプログラムに書き込んで


実行してみます。


まずは

for(;; )の場合 (Visual Studioでは実行できません)


#include <stdio.h>


int main(void){

int a;

for(;; ){

printf("このprintfは%d回目です\n",a);

}

return 0;

}


プログラムの実行結果


このprintfは4198543回目です

このprintfは4198543回目です

このprintfは4198543回目です



このfor文は初期化式において


変数aを初期化しないときに変数aに格納されている


いつもの数値4198543


をくりかえしprintf出力表示していますね。


a++もないのでaの値は4198543から増加しません。


条件式もかかれていないので


繰り返しはとまりません。



for(; ; a++)の場合 (Visual Studioでは実行できません)


#include <stdio.h>


int main(void){

int a;

for(; ; a++){

printf("このprintfは%d回目です\n",a);

}

return 0;

}

プログラムの実行結果


このprintfは4198543回目です

このprintfは4198544回目です

このprintfは4198545回目です


これはa++が継続処理方法に入っているので


変数aの値が1ずつ増加しながら


printf("このprintfは%d回目です\n",a);


をくりかえしていますね。


こちらも変数aを初期化していないので先ほどと同じく


変数aを初期化しないときに


変数aに最初から格納されている数値4198543から


繰り返しがはじまっています。


EAZYIDECのような古いタイプの統合開発環境では


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


プログラムに存在してもプログラムを実行することができました


Visual Studioでは


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


プログラムに存在する場合プログラムを実行することはできません



はいっ、さあ😝 


お次は


for(; a<=3;)の場合です。 (Visual Studioでは実行できません)


#include <stdio.h>


int main(void){

int a;

for(; a<=3;){

printf("このprintfは%d回目です\n",a);

}

return 0;

}


さあ、このプログラムの実行結果はどうなるでしょうか?


プログラムの実行結果


















・・・・・・・・・・













・・・・・


???



プログラムの実行結果は何も表示なしです。


それはどうして?でしょうか?


for(; a<=3;)をよく観察してみます。


ここでも


変数aを初期化していないので先ほどと同じ


変数aを初期化しないときに


変数aに最初から格納されている数値4198543から


命令文の繰り返しがはじまります。


ですが・・・


for文の条件式の部分 a<=3と数値4198543を


よく見比べてみましょう。


このfor(; a<=3;)の意味は


aの数値が3以下なら


printf("このprintfは%d回目です\n",a);


の命令をくりかえしなさい。という意味なのです。


ここでは


aの数値は最初から4198543となっており


aの数値は3以下ではないので


この命令文は一回も実行されないことになります。


そういうことなの。


では


for(a=1; ; )の場合はどうでしょうか?


#include <stdio.h>


int main(void){

int a;

for(a=1; ; ){

printf("このprintfは%d回目です\n",a);

}

return 0;

}


プログラムの実行結果


このprintfは1回目です

このprintfは1回目です

このprintfは1回目です

の繰り返しです。


こちらは😊!簡単でした。


初期化式はa=1で


継続処理方法a++もないので


aの値は増加しません。


ですので


aに格納されている数値はa=1のままで


printf("このprintfは%d回目です\n",1);


の命令文は繰り返し実行されます😊。


さらに


条件式も書かれていないので


繰り返しをとめる制限もかかりません



for(; a<=3; a++)の場合 (Visual Studioでは実行できません)


こちらは


もうお分かりになられますね😊


変数aは初期化されていないので


変数aには初期化されていない時の数値4198543が格納されていて


変数aの格納している値は3以下ではないので


命令文printf("このprintfは%d回目です\n",a);


は一回も実行されないことになります。


ですので


for(; a<=3; )の場合と同様に


プログラムの実行結果は表示なしです。


うふふ


それでは


for(a=1; a<=3; )の場合はどうなるのでしょうか。


#include <stdio.h>


int main(void){

int a;

for(a=1; a<=3; ){

printf("このprintfは%d回目です\n",a);

}

return 0;

}


プログラムの実行結果


このprintfは1回目です

このprintfは1回目です

このprintfは1回目です

このように


このprintfは1回目です


が繰り返しprintf出力表示されます


初期化式a=1により


aの値は1になりますが


aの値は


a++が記述されていないので


条件式a<=3をずっとみたしています。


ですので


printf("このprintfは%d回目です\n",a);


のaに1が代入された


printf("このprintfは%d回目です\n",1);


の繰り返し実行が止まることはなく


このprintfは1回目です


が、ずっと繰り返される、というわけなのですね。


では では・・・  🐤🐤🐤・・・ 


for(a=1;; a++)の場合は?


#include <stdio.h>


int main(void){

int a;

for(a=1;; a++){

printf("このprintfは%d回目です\n",a);

}

return 0;

}


プログラムの実行結果


このprintfは1回目です

このprintfは2回目です

このprintfは3回目です


初期化式a=1によりa=1から


命令文printf("このprintfは%d回目です\n",a);


の繰り返しが始まります。


そして


継続処理方法a++により1回命令文を実行するごとに


aの格納している値は1ずつ増加していきます。


こちらも条件式の記述がないので繰り返しが止まることはありません。



そして いよいよ😊


こちら 


一般的な


初期化式、条件式、継続処理方法


すべてかかれている


for(a=1; a<=3; a++)の場合です。


楽しみですね。


プログラムの実行結果は


このprintfは1回目です

このprintfは2回目です

このprintfは3回目です


となります。


初期化式a=1より

a=1の場合から命令文


printf("このprintfは%d回目です\n",a);


は実行され


継続処理方法a++によって

命令文内のaの値が1ずつ増加しながら


条件式a<=3によりa=3のときまで


printf("このprintfは%d回目です\n",a);


が繰り返し実行されて


aの値がa++により


4になったとき


条件式a<=3を満たさなくなるので


命令文


printf("このprintfは%d回目です\n",a);


の実行が終了します。


みなさん、いかがでしたでしょうか?


8つのfor文のパターンのうち


一回も繰り返しが実行されないのは


for(;; )

for(; ; a++)

for(; a<=3;)

for(a=1; ; )

for(; a<=3; a++)

for(a=1; a<=3; )

for(a=1;; a++)

for(a=1; a<=3; a++)


のなかの


条件式a<=3を満たさない


for(; a<=3;)

for(; a<=3; a++)


2つのパターンでした。




1768年  フランス



             ミルシーズが御贈りいたしました。


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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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