#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 [グローバル変数の初期値]¥n", x
); x = 101;
printf("x = %d [xに101を代入]¥n", x
); mondai1(102);
printf("x = %d [mondai1でxに102を代入]¥n", x
); mondai2();
mondai2();
mondai2();
printf("x = %d [mondai2を3回繰り返し、c=13になるが、x=cがそのあと来ないためxは最終的に12]¥n", x
); for (int i = 103; i<104; i++){
int x = i; // ループ内だけのローカル変数
printf("x = %d [ループ内のローカル変数xにi(103)を代入]¥n", x
); x = mondai3(i);
printf("x = %d [mondai3の戻り値(104)をローカル変数xに代入]¥n", x
) ;
}
printf("x = %d [グローバル変数xの値 (mondai3内で13に更新済)]¥n", x
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgeDsKCnZvaWQgbW9uZGFpMShpbnQgYil7CiAgICB4ID0gYjsKfQoKdm9pZCBtb25kYWkyKHZvaWQpewogICAgc3RhdGljIGludCBjID0gMTA7CiAgICB4ID0gYzsKICAgIGMrKzsKfQoKaW50IG1vbmRhaTMoaW50IGQpewogICAgeCsrOwogICAgZCsrOwogICAgcmV0dXJuIGQ7Cn0KCmludCBtYWluKHZvaWQpewogICAgcHJpbnRmKCJ4ID0gJWQgW+OCsOODreODvOODkOODq+WkieaVsOOBruWIneacn+WApF3CpW4iLCB4KTsKICAgIHggPSAxMDE7CiAgICBwcmludGYoInggPSAlZCBbeOOBqzEwMeOCkuS7o+WFpV3CpW4iLCB4KTsKICAgIG1vbmRhaTEoMTAyKTsKICAgIHByaW50ZigieCA9ICVkIFttb25kYWkx44GneOOBqzEwMuOCkuS7o+WFpV3CpW4iLCB4KTsKICAgIG1vbmRhaTIoKTsKICAgIG1vbmRhaTIoKTsKICAgIG1vbmRhaTIoKTsKICAgIHByaW50ZigieCA9ICVkIFttb25kYWky44KSM+Wbnue5sOOCiui/lOOBl+OAgWM9MTPjgavjgarjgovjgYzjgIF4PWPjgYzjgZ3jga7jgYLjgajmnaXjgarjgYTjgZ/jgoF444Gv5pyA57WC55qE44GrMTJdwqVuIiwgeCk7CiAgICBmb3IgKGludCBpID0gMTAzOyBpPDEwNDsgaSsrKXsKICAgICAgICBpbnQgeCA9IGk7IC8vIOODq+ODvOODl+WGheOBoOOBkeOBruODreODvOOCq+ODq+WkieaVsAogICAgICAgIHByaW50ZigieCA9ICVkIFvjg6vjg7zjg5flhoXjga7jg63jg7zjgqvjg6vlpInmlbB444GraSgxMDMp44KS5Luj5YWlXcKlbiIsIHgpOwogICAgICAgIHggPSBtb25kYWkzKGkpOwogICAgICAgIHByaW50ZigieCA9ICVkIFttb25kYWkz44Gu5oi744KK5YCkKDEwNCnjgpLjg63jg7zjgqvjg6vlpInmlbB444Gr5Luj5YWlXcKlbiIsIHgpCjsKICAgIH0KICAgIHByaW50ZigieCA9ICVkIFvjgrDjg63jg7zjg5Djg6vlpInmlbB444Gu5YCkIChtb25kYWkz5YaF44GnMTPjgavmm7TmlrDmuIgpXcKlbiIsIHgpOwogICAgcmV0dXJuIDA7Cn0KCg==