これらの制御文は機能的には if, for で代替できる。使う理由としては、コードの読みやすさを優先させるため。扱いが楽という意味で、Syntax Sugarという。goto文に関しては、むやみに使わないようにとある。バグ、メンテなど問題が発生しやすいという理由から。これらの制御文は積極的に使うつもりはないので、基本的な書き方だけ載せておく。
while
#include <stdio.h>
int main(void){
int i=10;
while(i>0){
printf("カウントダウン %d\n",i);
i--;
}
return 0;
}
|
while文は条件を満たしている間繰り返す。
カウントダウン 10
カウントダウン 9
カウントダウン 8
カウントダウン 7
カウントダウン 6
カウントダウン 5
カウントダウン 4
カウントダウン 3
カウントダウン 2
カウントダウン 1
|
do while
#include <stdio.h>
int main(void){
int a = 11;
int i = 1;
do{
printf("%d回通過 a=%d\n",i,a);
i++;
a++;
} while(a < 10);
printf("%d回実行して終了\n",i-1);
return 0;
}
|
do whileは条件を満たしていなくても1回は通過させる。
switch
#include <stdio.h>
int main(void){
int a = 2;
switch(a){
case 0:
printf("aは0です\n");
break;
case 1:
printf("aは1です\n");
break;
case 2:
printf("aは2です\n");
break;
case 3:
printf("aは3です\n");
break;
default:
printf("aは0,1,2,3以外です\n");
break;
}
return 0;
}
|
switch文は条件によって処理を振り分けることができる。ifよりも読みやすくなる。新しいGo言語でもswitch文だけは採用されている。
goto
#include <stdio.h>
int main(void){
int i=0;
loop:
printf("%d\n",i);
i++;
if (i > 5) goto end;
goto loop;
end:
printf("終了");
return 0;
}
|
gotoは任意のラベルへジャンプすることができる。低級言語のアセンブラでは当たり前の命令(これしかない?)だが、高級言語では可読性を低下させるとして使われない。
C言語 ANSI C89 Meadow & MinGW GCC 目次はこちら