if()continue;文でもっともっと遊んでみる if(0)continue;文はどのように動作するかな? 天Cのフランス語と芸人

#include <stdio.h>

int main(void){

int a;


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

if(a==1)

printf("%d回目のご飯はまぐろです\n",a);

if(a==5)

printf("%d回目のご飯はしゃけです\n",a);

if(a==1||a==5)continue;

printf("%d回目のご飯はNouvel de かつおです\n",a);

}

return 0;

}


てんC「このサンプルプログラム内の


for文による


printf("%d回目のご飯はNouvel de かつおです\n",a);


の命令文の繰り返しにおいて


a=1回目 a=5回目のとき


論理式a==1||a==5が真の値1をもつため


if(a==1||a==5)につづくcontinue;



実行され


printf("%d回目のご飯はNouvel de かつおです\n",a);


の命令文は実行されないのでした。


ソーラー 「そう a=1回目 a=5回目のときはね。」


てんC 「ではif(a==1||a==5)continue;のかわりに


if(a==1&&a==5)continue;を代入したらコンパイル結果は


どのようになるのでしょうか?」


ソーラー 「(a==1||a==5)は


aは1に等しいとき

または

aは5に等しいとき


論理式

(a==1||a==5)が真の値1をもつのだったね。


では


(a==1&&a==5)は


aは1に等しいとき

かつ

aは5に等しいとき


論理式

(a==1&&a==5)が真の値1をもつんだよねぇ。


でもでも・・・」


てんC

「でもでも・・・(^^)」


ソーラー 「


aは1に等しいとき

かつ

aは5に等しいとき


はないんだ。」


てんC

「そ、そんな・・・」


ソーラー 「


aは1に等しいとき

かつ

aは5に等しいとき


はないんだよぉぉぉ。」


咆哮ほうこうする今日も明るい芸人。


あたりの空間に声が響きわたる。


てんC

「そ、そんな・・・やっぱり そうですよね。


sole na mon《ソレナモン》」


ソーラー 「てんC もしやそれはフランス語かい?


いつのまに・・・」


てんC 「はいっ みなさんがお留守しておられた間に


少し学習しておりました。


フランス語の勉強もおもしろくって・・」


ソーラー 「それは よかったmon」


てんC 「uti mo uresiimon《うちもうれしい》」


ソーラー 「なんか フランス語じゃないような・・・」


てんC 「so na ko to na i mon《そんなことない》」


ソーラー 「いま、そんなことないもん! っていったよね」


てんC「みなさま 芸人さんをみて


おわかりいただけましたでしょうか?


このように


aは1に等しいとき

かつ

aは5に等しいとき


はないため


論理式(a==1&&a==5)《a==1かつa==5》は常に偽の値0をもちます。


すると


if(a==1&&a==5)continue;



if(0)continue;


と同じ命令文になり


continue;


はfor文のaの値にかかわらず実行されることは


なくなります。


となると・・・


命令文


if(a==1||a==5)continue;

のかわりに


if(a==1&&a==5)continue;


を記述したプログラムの


コンパイル結果はどうなるのでしょうか?




#include <stdio.h>

int main(void){

int a;


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

if(a==1)

printf("%d回目のご飯はまぐろです\n",a);

if(a==5)

printf("%d回目のご飯はしゃけです\n",a);

if(a==1&&a==5)continue;/*👈ここです(#^^#)*/

printf("%d回目のご飯はNouvel de かつおです\n",a);

}

return 0;

}


コンパイル結果は(^^)



1回目のご飯はまぐろです

1回目のご飯はNouvel de かつおです

2回目のご飯はNouvel de かつおです

3回目のご飯はNouvel de かつおです

4回目のご飯はNouvel de かつおです

5回目のご飯はしゃけです

5回目のご飯はNouvel de かつおです

6回目のご飯はNouvel de かつおです

7回目のご飯はNouvel de かつおです

8回目のご飯はNouvel de かつおです

9回目のご飯はNouvel de かつおです

となります。


if(a==1&&a==5)に続く命令文


continue;


が常に実行されないため


命令文


printf("%d回目のご飯はNouvel de かつおです\n",a);



for文によって


1から9回目の繰り返しの間


すべて実行されています。


1回目と5回目が


とばされて実行されないということはなくなるのです。」


ソーラー 「な、なんだってぇぇぇ~~~\(^^)/」


アレサ 「もうっ! ソーラーさんたら、


ぼける場所をまちがってます。」

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

作者を応援しよう!

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

応援したユーザー

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