
C言語勉強中。メモがてらここに記録。
条件分岐で活躍するifやswitch。どっちも似たようなものだろうと思っていたが、switchは、実は、ちょっと独特。
if系統は、
if(条件1){条件1適合時にのみ実行}
else if (条件2){条件2適合時にのみ実行}
else{条件全てに当てはまらない時に実行}
・・・とまあ、シンプルなのだが。
switchの場合
—switch{
case(条件1):実行内容1
case(条件2):実行内容2
default:実行内容3
}
—
これ、条件1に適合した場合、実行内容は、1も次の2も実行されてしまう。もちろん、defaultの実行内容3も。
条件2に適合した場合は、実行内容2と実行内容3が実行される。
つまり、switchは、「入り口部分」でだけ条件に適合するかどうかが問題になり、一旦適合すると、同じswitchブロック内(スコープ内)であれば、その先は、条件部分無視でずらずらと実行されることになる。
ただし、breakが途中にあれば、そこからswitchから抜ける。条件1の時、実行内容1のみで終わって欲しければ、breakを挿入しておく必要がある。
case 条件1:{実行内容1;break;}
case 条件2:{実行内容2;break;}
・・・という形でやればOK。
ちなみに、こんな感じで動作確認をしてみた。
int main(void)
{
int cnt;
for (cnt = 0; cnt < 5;++cnt) {
switch(cnt) {
case 0:printf("case0\n");
case 1:printf("case1\n");
case 2:printf("case2\n");
case 3:printf("case3\n");
case 4:printf("case4\n");
}
}
}