C言語のあれこれ6(条件に関する演算子と条件分岐、繰り返し文の作成方法)
はじめに
以下の記事の続きになります。
以下の順番で作成していきます。
- 変数と定数の作成方法
- 基本的な値型の種類と構造体の作成方法
- 関数の作成方法
- 計算するための演算子の説明
- 条件に関する演算子と条件分岐、繰り返し文の作成方法 <=今回の記事
- 配列を伴わないポインタの使用方法
- 配列を伴ったポインタの使用方法
- プリプロセッサの利用方法
追記
モチベーションが続いているうちに作り切ってしまおうと考えたため、連投します。(2回目)
本編
ここでは繰り返し文と条件分岐の方法を記述します
条件
条件は次の内容から確認することができます。
条件として指定した値が0以外の場合
こちらはC言語にboolまたはboolean型(trueやfalse)がないため機能として入れられているものになります。
内容はそのままで、入れた変数の値が0以外の場合は{}の中の処理を行い、0の場合は{}を無視して}の次の行から実行するようになります。
//不等号などの条件式が正しい場合
こちらは様々な言語でもあるように以下の条件式が正しい場合に{}の中の処理を行うことができます。
値1
== 値2
//(値1
と 値2
の値が等しい場合)
値1
!= 値2
//(値1
と 値2
の値が等しくない場合)
値1
> 値2
//(値1
が 値2
より大きい場合)
値1
>= 値2
//(値1
が 値2
より大きいまたは値1
と 値2
が等しい場合)
値1
< 値2
//(値1
が 値2
より小さい場合)
値1
<= 値2
//(値1
が 値2
より小さいまたは値1
と 値2
が等しい場合)
また、上記の条件を次のように組み合わせることも可能です
条件1 && 条件2(条件1も条件2も正しい場合)
条件1 || 条件2(条件1と条件2どちらかが正しい場合)
上記の内容を同時に利用する場合は次の例の通りになります。
条件1 && 条件2 || 条件3 (条件1と条件2が正しい場合、または条件3が正しい場合)
また、次の記号で条件式を反転させることも可能です。
!条件1 (条件1が正しくない場合に実行します)
if文
基本的な条件分岐です。
基本的な構文は以下のようになります。
if(条件){条件が正しい時の処理}
if文
はそれ以降に次の内容を任意で追加できます。
else if(条件)
else if
に一番近い先頭のif文が正しくない場合に(条件)を確認し、正しい場合に処理を実行します。
else
else
に一番近い先頭のif
からelse if
ですべての条件が正しくない場合に処理を実行します。
else if
もelse
も基本的にはif文
の次に記述します。
また、else
に関してはif
と1対1で配置する必要があります。
例1
if(条件){}
else if(条件){}
else {}
例2
if(条件){}
else{}
例3
if(条件){}
else if(条件){}
例4
if(条件){}
else if(条件){}
else if(条件){}
else{}
以下は実際にC言語での記載になります。
if (1)
{
// 処理//
}
else if (1)
{
// 処理//
}
else
{
// 処理//
}
if (0) return 0;
※C言語では数値としての0以外はtrue
、0はfalseとして扱われます。
※{}を除いて次の;までをif文
の処理として利用することが可能
例ではreturn 0;
が対象
switch文
かなり特殊な条件分岐を行う命令です
基本的な構文は次の通りです。
switch(確認する値)
{
}
上記の状態は構文として認識する最低限のswitch文
です。
この状態では条件によっても動くことはありません。
次の内容は任意で登録する条件にないります。
case
基本的な構文は次の通りです。
switch(確認する値)
{
case 値:
一致した場合の処理
}
ここで記述した値が確認する値と一致する場合に一致した場合の処理が走ります。
同じswitch文
内でcase
の値を登録する場合は既に登録されているcase
を利用することができません
default
基本的な構文は次の通りです。
switch(確認する値)
{
default:
処理
}
default
はすべてのcase
の値と確認する値が一致しない場合に処理を行います。
1つのswitch文
内ではdefault
は1度しか記述できません。
基本的にswitch文ではcase内に終了させるときにbreakを設置します。
設置しない場合の動きは次の例をもとに記述します。
例1
switch(1)
{
case 1:
//処理1//
case 2:
//処理2//
default:
//処理d//
}
上記のコードを走らせると処理1と処理2と処理dが走ります。
break
を設置する理由はこれ以降の処理を走らせないために設置します。
break
は後ほど説明します。
switch (1)
{
case 1:
// 処理//
break;
default:
// 処理//
break;
}
条件式演算子
この条件分岐は特殊な部類に当たります。
基本的な構文は次の通りです。
条件 ? 正しい場合の処理 : 誤りの場合の処理;
条件の内容が正しい場合は手前の処理を行い、誤っている場合は後の処理を行います。
int test = 1
? 100//条件が正しい場合の処理
: 0;//条件が偽の場合の処理
while文
基本的な繰り返し文の一つです。
構文は次の通りです。
while(条件)
{
//処理//
}
while文
は条件が正しい間のみ中の処理を行います。
do while
として、必ず1度は中の処理を行う繰り返し文も利用することができます。
while (1)
{
break;//中の処理
}
while (0)return 0;//中の処理
do
{
break;//中の処理
}
while (1);
for文
基本的な繰り返し文の一つです。
構文は次の通りです。
for(変数の初期化;条件式;変数の処理)
{
処理
}
for文
を記述するには次の要素が必要です。
変数の初期化
繰り返しに利用する変数を初期化します。
ここでは()の中で変数を定義していますが、あらかじめ定義した変数も利用することができます。
条件式
ここは中の処理を続けるための条件を記述します。
終了時の変数の処理
かなり特殊な場所です
基本的には++
や--
を利用します。
ただし、ここ内容を実行するタイミングが特殊で
++変数名
や--変数名
の場合は中の処理を行う前のタイミングでその処理を実行され、
変数名++
や変数名--
の場合は中の処理を行った後のタイミングでその処理を実行されます。
for(unsigned long i = 0;i<5;i++)
{
//中の処理
}
unsigned long i = 0;
for(i = 0;i<5;i++)break;//中の処理
繰り返し分を行う際には次の内容を利用することで、より細かい挙動を指定することができます。
break
強制的にループ処理から抜けます。
この処理はswitchからも抜ける処理になります。
continue
強制的に次のループを行います。(つまり1回繰り返ししたという事象を起こします)
Discussion