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