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; } } }