if()continue;文はfor文の中でもちいられ if()の()内の条件式が1の値(真の値)を持つときはその繰り返しの回の命令文を実行しません 

#include <stdio.h>

int main(void){

int a;


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

if(a==5)continue;

printf("%d回目のご飯はマスです\n",a);

}

printf("・・・・・・・・・(^^)\n");

printf("にゃ、にゃお~~~ん(^^)\n");

printf("お食事に・・・マス大好物にゃん\n");

printf("いりこもありますよ\n");

return 0;

}


コンパイル結果

1回目のご飯はマスです

2回目のご飯はマスです

3回目のご飯はマスです

4回目のご飯はマスです

6回目のご飯はマスです

7回目のご飯はマスです

・・・・・・・・・(^^)

にゃ、にゃお~~~ん(^^)

お食事に・・・マス大好物にゃん

いりこもありますよ

続行するには何かキーを押してください_


ぶーにゃん 「ぺろりんっマスがいっぱいとれるにゃんね。」


てんC 「はいっ ご近所の増田さんがいつも、


ぶーにゃんさんのためにもってきてくれます


ぶーにゃん 「増田さん、ありがとにゃん。」


てんC 「このコンパイル結果をみると


5回目のご飯はマスです


がぬけています。


if() continue;文は命令文を繰り返すfor{}文の{}内で共にもちいられ

👆

if() の()の中の論理式が真の値1をもつようになる回の


命令文は実行せず


とばして


次の回以降の命令文の繰り返しを実行します。


このプログラムの場合では


5回目の繰り返しのとき


if()の()のなかの論理式a==5が真の値1をもつので


printf("%d回目のご飯はマスです\n",a);


が実行されず


5回目のご飯はマスです


は表示されません。


その次の


6回目のご飯はマスです


以降は表示されています


if() の()の中の論理式が真の値1をもつようになる回の


命令文は実行しないのであれば



次のプログラムのように


#include <stdio.h>

int main(void){

int a;


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

if(1)continue;

printf("%d回目のご飯はマスです\n",a);

}


return 0;

}


      最初からif(1)continue;と



if() の()の中の論理式が🌞真の値1🌞をもっていたらどのように


プログラムは実行されるのでしょうか?




このプログラムの場合 コンパイル後


a=1回目の繰り返しのとき


if(1)continue;

printf("%d回目のご飯はマスです,a\n");


となり


if(1)continue;の働きにより

printf("%d回目のご飯はマスです\n",a);は実行されず


コマンドプロンプト画面に

1回目のご飯はマスです

は表示されません。


同様に

a=2回目から

a=7回目の

printf("%d回目のご飯はマスです\n",a);も実行されず


コマンドプロンプト画面に

何も表示されません。


ですので コンパイル結果は


続行するには何かキーを押してください_


以外は


何も表示されません。


ぶーにゃん「マ、マッス~~~」


では,では😊


次のプログラムのように


#include <stdio.h>

int main(void){

int a;


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

if(1)continue;

printf("%d回目のご飯はマスです\n",a);

}

return 0;

}

for(a=1;a<8;a++)の

条件式a<8を取り除いて

for(a=1;;a++)とし


無限に

if(1)continue;

printf("%d回目のご飯はマスです\n",a);


を繰り返すプログラムをコンパイルしたら


どのような結果が表示されるでしょうか?


それでは・・・・


コンパイルっ」



てんC

「コンパイル結果は・・・





_(アンダーバー)以外は何も表示されません


続行するには何かキーを押してください_


も表示されません。


これは


a=1回目の繰り返しのとき


if(1)continue;

printf("%d回目のご飯はマスです\n",a);


となり


if(1)continue;の働きにより

printf("%d回目のご飯はマスです\n",a);は実行されず


a=2回目の命令文の実行にうつります。


a=2回目以降も

printf("%d回目のご飯はマスです\n",a);は実行されず


次回の命令文の実行にうつります。


そう、つまり


if(1)continue;文により


ずっと その回の命令文の実行を飛ばし


次回の命令文を実行しようとするだけで


コマンドプロンプト画面には何も表示されません。


この繰り返しが無限に実行され続けるので


続行するには何かキーを押してください


を表示する段階までたどりつけず


アンダーバーだけが表示されているのです」


🍊🍊🍊


実はこの時コンピュータはプログラムを終了することができず


プログラムを実行し続けています


アンダーバーが表示されているので


プログラムが終了したと思ってしまいますね。


プログラムが終了したと思い


新たにもう1つ別のプログラムをコンパイルすると


(Visual Studioの場合)

エラー LNK1168 ファイル c:\users\solarplexuss\source\repos\Project11\Debug\Project11.exe を開いて書き込むことができません。


と表示されます。


Visual Studioでは1度に1つのプログラムしか実行できないため


2つのプログラムを実行しようとすると


このようなビルドエラー表示がでてきます。


ですので


別のプログラムを実行するには


いったんアンダーバーが表示されているコマンドプロンプト画面を


消してプログラムの実行を終了させる必要があります。


🍊🍊🍊

ぶーにゃん

「マスご飯ちゃんはでてこないのかにゃ」


てんC「でてきませんね。(^^)


また元のプログラムに


#include <stdio.h>

int main(void){

int a;


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

if(a==5)continue;

printf("%d回目のご飯はマスです\n",a);

}

printf("・・・・・・・・・(^^)\n");

printf("にゃ、にゃお~~~ん(^^)\n");

printf("お食事に・・・マス大好物にゃん\n");

printf("いりこもありますよ\n");

return 0;

}


かえってみましょう。


このとき

if(a==5) continue;文の代わりにif(a==5) break;文を


代入すると


#include <stdio.h>

int main(void){

int a;


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

if(a==5) break;

printf("%d回目のご飯はマスです\n",a);

}

printf("・・・・・・・・・(^^)\n");

printf("にゃ、にゃお~~~ん(^^)\n");

printf("お食事に・・・マス大好物にゃん\n");

printf("いりこもありますよ\n");

return 0;

}


コンパイル結果は

1回目のご飯はマスです

2回目のご飯はマスです

3回目のご飯はマスです

4回目のご飯はマスです

・・・・・・・・・(^^)

にゃ、にゃお~~~ん(^^)

お食事に・・・マス大好物にゃん

いりこもありますよ


となり


a=5回目以降の命令文の繰り返しは実行されず


a=4回目までの命令文の実行で


for文をぬけて


次の命令文

printf("・・・・・・・・・(^^)\n");

printf("にゃ、にゃお~~~ん(^^)\n");

printf("お食事に・・・マス大好物にゃん\n");

printf("いりこもありますよ\n");

が実行されていきます。


さあ


ぶーにゃんさん マスごはん 召し上がれ」


ぶーにゃん 「にゃ、にゃお~~~ん😝」





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

作者を応援しよう!

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

応援したユーザー

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