#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 [GA: グローバル変数は自動的に0で初期化される]\n", x);
    x = 101;
    printf("x = %d [GA: グローバル変数xに101を代入した]\n", x);
    mondai1(102);
    printf("x = %d [GA: mondai1で引数bの102をグローバル変数xに代入した]\n", x);
    mondai2();
    mondai2();
    mondai2();
    printf("x = %d [S: mondai2を3回実行し、static変数cが10、11、12と変化した]\n", x);
    for (int i = 103; i < 104; i++)
    {
        int x = i;
        printf("x = %d [L: for文内のローカル変数xにiの103を代入した]\n", x);
        x = mondai3(i);
        printf("x = %d [L: mondai3で引数dを1増やし、戻り値104を代入した]\n", x);
    }
    printf("x = %d [GA: mondai3でグローバル変数xを12から13に増やした]\n", x);
    return 0;
}