分岐処理とは
構造化プログラミングの柱の1つである分岐処理とは、状況に応じて実行する処理を変えるための構文です。
条件式を評価してその真偽に対応して分岐します。
if文
if文は
if(【条件式】) { 【条件式が真のときに実行される処理】; }
のような形で使われます。
また、
if(【条件式1】) { 【条件式1が真のときに実行される処理】; } else if(【条件式2】) { 【条件式1が偽、条件式2が真のときに実行される処理】; } else { 【条件式1、2共の偽のときに実行される処理】; }
のように後ろにいくつでもelse文やelse if文を繋げることができます。
以下がサンプルコードです。
if_sample.c
#include <stdio.h> int main(void) { int input; scanf_s("%d", &input); if(input > 0) printf("入力は正の数です。\n"); else if(input < 0) printf("入力は負の数です。\n"); else printf("入力は0です。\n"); return 0; }
switch文
switch文はif文とは違い、条件式ではなく一つの変数の値によって分岐を決定します。l
switch(【分岐用変数】) { case 1:【変数の値が1のとき実行される処理】; break; case 2:【変数の値が2のとき実行される処理】; break; … default:【変数の値がどれにも一致しないときの処理】; break; }
このように使います。
caseの後の値には文字なども使うことができます。
break文を書かないと、該当するcase以下全ての文が実行されます。
以下がサンプルです。
switch_sample.c
#include <stdio.h> int main(void) { int input; scanf_s("%d", &input); switch(input) { case 0: printf("0のときの処理"); break; case 1: printf("1のときの処理"); break; case 2: printf("2のときの処理"); break; defalut: printf("それ以外の処理"); break; } return 0; }
三項演算子
if文の省略形です。
【条件式】 ? 【条件が真のときの処理】 : 【条件が偽のときの処理】;
演算子なので引数としても使うことができます。
ternary_sample.c
#include <stdio.h> int main(void) { int input; int a; scanf_s("%d", &input); a = input > 0 ? input : -input; printf("a = %d\n", a); return 0; }
このように使うと、inputが正ならばそのまま、負ならば-をつけて代入しています。
これは絶対値の処理ですね。