#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: 2行目でグローバル変数xの初期値は0]\n", x);
    x = 101;
    printf("x = %d [GS: グローバル変数xに101を代入]\n", x);
    mondai1(102);
    printf("x = %d [GS: mondai1でグローバル変数xに102を代入]\n", x);
    mondai2();
    mondai2();
    mondai2();
    printf("x = %d [GS: mondai2を3回呼び、静的変数cが10、11、12と変化したため]\n", x);
    for (int i = 103; i < 104; i++) {
        int x = i;
        printf("x = %d [LA: 27行目でfor文内の自動変数xにi=103を代入]\n", x);
        x = mondai3(i);
        printf("x = %d [LA: mondai3がdを103から104に増やし、その値をローカル変数xに代入]\n", x);
    }
    printf("x = %d [GS: mondai3内でグローバル変数xを12から13に増加]\n", x);
    return 0;
}