#include <stdio.h>

int x;

void mondai1(int b) {
    x = b;
}

void mondai2(void) {
    static int c = 10;
    x = c;
    c++;
}

int mondai3(int d) {
    x++;
    d++;
    return d;
}

int main(void) {
    printf("x = %d[GS:3行目でグローバル変数は自動的に0で初期化される]\n", x);

    x = 101;
    printf("x = %d[GS:24行目の101を代入]\n", x);

    mondai1(102);
    printf("x = %d[GS:２７行目でmondai1のグローバル変数xに102を代入]\n", x);

    mondai2();
    mondai2();
    mondai2();
    printf("x = %d[GS:３１行目でmondai2のstaticの変数cから順番にmondai2を3回代入]\n", x);

    for (int i = 103; i < 104; i++) {
        int x = i;
        printf("x = %d[LA:３６行目でfor文のiをxに代入]\n", x);

        x = mondai3(i);
        printf("x = %d[LA:37行目のiを代入し、mondai3で++されたのがreturnで戻ってくる]\n", x);
    }

    printf("x = %d[GS:１７行目でmondai3内でグローバル変数xを12から13に増加]\n", x);

    return 0;
}