読者です 読者をやめる 読者になる 読者になる

C言語学習log:場合に応じた処理

やさしいC 第3版 』Lesson5は「場合に応じた処理」です。

これまでは、コード内の文が1文ずつ順序良く処理されていくプログラムを学習してきましたが、この章では、複数の文をまとめて処理をコントロールする方法を学習します。まだまだ単純とは言え、少しプログラミングぽくなってきました。

関係演算子と条件

C言語で様々な状況を表すためには条件という概念を使い、条件をつくるために使う「>」や「==」などの記号は、関係演算子と呼ばれます。

if文

C言語では、状況に応じた処理を行う場合、「条件」の値(真または偽)に応じて処理を行うというスタイルの文を記述し、そのような文を条件判断文と言います。条件判断分の一つとしてif文という構文があります。if文は、

if (条件)
 文;

という形で記述され、条件が真の場合に指定した文が処理されます。また、

if (条件){
 文1;
 文2;
 ・・・
}

と記述することで、複数の文を処理することができます。

if 〜 else文

if文のバリエーションとして、条件が偽の場合に指定した文を処理する構文がif 〜 else文です。

if(条件)
 文1;
else
 文2;

if文の場合と同様に{ }でブロックをつくり、複数の文を処理させることができます。

if 〜 else if 〜 else

if文のバリエーションとして、2つ以上の条件を判断させて処理する構文がif 〜 else if 〜 elseです。

if(条件1){
 文1;
 文2;
}
else if(条件2){
 文3;
 文4;
}
else if(条件3){
 文5;
 文6;
}
else{
 文7;
 文8;
}

上記の構文では、条件1が真のときに「文1」「文2」が処理され、条件1が偽でかつ条件2が真のときに「文3」「文4」が処理され、条件1と条件2が偽でかつ条件3が真のときに「文5」「文6」が処理されます。そして、すべての条件が偽のときに「文7」「文8」が処理されます。エクセルでIF関数を入れ子にしていくのと似ています。

switch文

if文と同じように、条件によって処理をコントロールできるswitch文という構文があります。

switch(式){
 case 定数1:
  文1;
  break;
 case 定数2:
  文2;
  break;
 default:
  文D;
  break;
}

上記の構文では、switch文内の式がcaseのあとの定数値と一致すれば、そのあとの文から「break」までの文を処理します。どれにあてはまなければ「default:」以下の文を処理します。

論理演算子

より複雑な条件を書くために論理演算子という演算子があり、論理演算子を使うと条件を組み合わせて複雑な条件をつくることができます。

演算子 真になる場合
&& 左辺・右辺がともに真の場合
|| 左辺・右辺のどちらかが真の場合
! 右辺が偽の場合

条件演算子「?:」というものもあり、これを使うと

if(res ==1)
 ans = 'A';
else
 ans ='B';

というif文を使った簡単なコードを、

ans = (res == 1) ? 'A' : 'B';

と記述することができます。構文は以下のとおりです。

条件 ? 真のとき式1 : 偽のとき式2