#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: 18行目でグローバル変数xに101を代入したため]\n", x);
mondai1(102);
printf("x = %d [GS: 20行目でmondai1関数を呼び出し、4行目でxに102を代入したため]\n", x);
mondai2();
mondai2();
mondai2();
printf("x = %d [GS: 22～24行目でmondai2関数を3回呼び出し、8行目でcの値12をxに代入したため]\n", x);
for (int i = 103; i < 104; i++) {
int x = i;
printf("x = %d [LA: 27行目でローカル変数xにiの値103を代入したため]\n", x);
x = mondai3(i);
printf("x = %d [LA: 29行目でmondai3関数を呼び出し、14行目で104が返されてxに代入されたため]\n", x);
}
printf("x = %d [GS: 29行目でmondai3関数を呼び出し、12行目でグローバル変数xが1増えて13になったため]\n", x);
return 0;
}