#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:return0で0を呼び戻したから]\n", x);
    x = 101;
    printf("x = %d[GS:上でx=101を代入しているから]\n", x);

    mondai1(102);
    printf("x = %d[GS:mondai1(102)はx=102のときに実行されるから]\n", x);

    mondai2();
    mondai2();
    mondai2();
    printf("x = %d[GS:mondai2のプログラムで3回実行されてc=10+1+1になるから]\n", x);

    for (int i = 103; i < 104; i++){
        int x = i;
        printf("x = %d[LA:x=103が上で代入されているから]\n", x);
        x = mondai3(i);
        printf("x = %d[LA:x=103+1をした値だから]\n", x);
    }

    printf("x = %d[GS:mondai3という関数に戻ってx=x+1されているから]\n", x);
	return 0;
}
