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;



実行されることにより


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の論理式が1の値を持ち

かつ

a==5の論理式が1の値を持つ


つまり


a==1&&a==5



1&&1

となることはないというわけです


論理式(a==1&&a==5)は


1&&1

となるときのみ


真の値1をもつので


論理式(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で共有
  • はてなブックマークでブックマーク

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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