c の繰り返し処理は for と while。
for
条件を満たすまで繰り返す。
#include <stdio.h>
int main(void) {
int i;
printf("from 1 to 9\n");
for (i = 1; i < 10; i++) {
printf("%d ", i);
if (i == 9) {
printf("\n");
}
}
printf("from 1 to 9 increasing by 2\n");
for (i = 1; i < 10; i += 2) {
printf("%d ", i);
if (i == 9) {
printf("\n");
}
}
return 0;
}
単独で使っている分には、
i++ と ++i は i += 1と同じ。
i-- と --i は i -= 1 と同じ。
前置と後置は、式の一部として使用される場合は気をつける。
・ ++i の作用は式の値として、i + 1 の値を返す事、副作用は i に i + 1 の結果が代入される。
・ i++ の作用は式の値として、i の値を返す事、副作用はその後 i に i + 1 の結果が代入される。
for文におけるiのインクリメントの前置と後置の違いがわかりません
2重ループ
for をネストしてループを作る。
#include <stdio.h>
int main(void) {
int i, j;
printf("Times Table from 1 to 9\n");
for (i = 1; i < 10; i++) {
for (j = 1; j < 10; j++){
printf("%d * %d = %d\n", i, j, i*j);
}
}
return 0;
}
while
for と同じく条件を満たすまで繰り返す。
#include <stdio.h>
int main(void){
int i = 0;
while (i < 10) {
printf("%d ", i);
if ( i == 9) {
printf("\n");
}
i++;
}
return 0;
}
do while
do while は do {} を一度実行してから条件判定を行うので、条件を最初から満たさない場合はwhileと挙動が異なる。
#include <stdio.h>
int main(void) {
int i = 0;
do {
printf("%d ", i);
i++;
} while (i <10);
printf("\n");
}
無限ループ
while (1) で無限ループを作り、break で無限ループを抜ける。
#include <stdio.h>
int main(void) {
int i;
printf("If negative, exit loop.\n");
while (1) {
printf("Please input Integer: ");
scanf("%d", &i);
if (i < 0) {
printf("Negative!!! end loop.\n");
break;
}
}
}