それでは 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年 フランス
ミルシーズが御贈りいたしました。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます