[c言語] さっと復習(4) ループ

c の繰り返し処理は forwhile

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++++ii += 1と同じ。

i----ii -= 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 whiledo {} を一度実行してから条件判定を行うので、条件を最初から満たさない場合は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;
        }
    }
}