#include <stdio.h>
int x; // グローバル変数(自動ではなく静的領域に置かれ、0で初期化)
void mondai1( int b) {
x = b; // グローバル x に b を代入
}
void mondai2( void ) {
static int c = 10 ; // 静的変数(初回だけ10で初期化され、値が保持される)
x = c; // グローバル x に c を代入
c++; // c をインクリメント(次回呼び出しに影響)
}
int mondai3( int d) {
x++; // グローバル x をインクリメント
d++; // ローカル変数 d をインクリメント
return d; // d の新しい値を返す
}
int main( void ) {
// 1回目:グローバル x は 0 で初期化される(GA)
printf ( "x = %d [GA: グローバル変数はプログラム開始時に0で初期化される]\n " , x
) ;
// 2回目:mainで x = 101 を代入(GA)
x = 101 ;
printf ( "x = %d [GA: main関数内でグローバルxに101を代入した]\n " , x
) ;
// 3回目:mondai1(102) により x = 102(GA)
mondai1( 102 ) ;
printf ( "x = %d [GA: mondai1が呼ばれ、引数102をそのままグローバルxへ代入した]\n " , x
) ;
// 4回目:mondai2 を3回呼ぶ → static c が 10→11→12→13 と変化
mondai2( ) ; // x = 10
mondai2( ) ; // x = 11
mondai2( ) ; // x = 12
printf ( "x = %d [GS: mondai2内のstatic変数cが10→11→12→13と変化し、最後に12がxへ代入された]\n " , x
) ;
// 5回目:for文内のローカル変数 x(LA)
for ( int i = 103 ; i < 104 ; i++ ) {
int x = i; // ローカル x が宣言され、グローバル x を隠す
printf ( "x = %d [LA: for文内でローカル変数xが宣言され、i(103)が代入された。グローバルxは隠れている]\n " , x
) ;
// 6回目:mondai3 によりローカル x に戻り値 104 を代入(LA)
x = mondai3( i) ;
printf ( "x = %d [LA: mondai3でグローバルxが++され13になり、戻り値104がローカルxへ代入された]\n " , x
) ; }
// 7回目:グローバル x は mondai3 により 12→13(GA)
printf ( "x = %d [GA: for文内のmondai3呼び出しでグローバルxが12→13にインクリメントされた]\n " , x
) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmludCB4OyAgIC8vIOOCsOODreODvOODkOODq+WkieaVsO+8iOiHquWLleOBp+OBr+OBquOBj+mdmeeahOmgmOWfn+OBq+e9ruOBi+OCjOOAgTDjgafliJ3mnJ/ljJbvvIkKCnZvaWQgbW9uZGFpMShpbnQgYil7CiAgICB4ID0gYjsgICAvLyDjgrDjg63jg7zjg5Djg6sgeCDjgasgYiDjgpLku6PlhaUKfQoKdm9pZCBtb25kYWkyKHZvaWQpewogICAgc3RhdGljIGludCBjID0gMTA7ICAvLyDpnZnnmoTlpInmlbDvvIjliJ3lm57jgaDjgZExMOOBp+WIneacn+WMluOBleOCjOOAgeWApOOBjOS/neaMgeOBleOCjOOCi++8iQogICAgeCA9IGM7ICAgICAgICAgICAgICAvLyDjgrDjg63jg7zjg5Djg6sgeCDjgasgYyDjgpLku6PlhaUKICAgIGMrKzsgICAgICAgICAgICAgICAgLy8gYyDjgpLjgqTjg7Pjgq/jg6rjg6Hjg7Pjg4jvvIjmrKHlm57lkbzjgbPlh7rjgZfjgavlvbHpn7/vvIkKfQoKaW50IG1vbmRhaTMoaW50IGQpewogICAgeCsrOyAgIC8vIOOCsOODreODvOODkOODqyB4IOOCkuOCpOODs+OCr+ODquODoeODs+ODiAogICAgZCsrOyAgIC8vIOODreODvOOCq+ODq+WkieaVsCBkIOOCkuOCpOODs+OCr+ODquODoeODs+ODiAogICAgcmV0dXJuIGQ7ICAvLyBkIOOBruaWsOOBl+OBhOWApOOCkui/lOOBmQp9CgppbnQgbWFpbih2b2lkKSB7CgogICAgLy8gMeWbnuebru+8muOCsOODreODvOODkOODqyB4IOOBryAwIOOBp+WIneacn+WMluOBleOCjOOCi++8iEdB77yJCiAgICBwcmludGYoInggPSAlZCBbR0E6IOOCsOODreODvOODkOODq+WkieaVsOOBr+ODl+ODreOCsOODqeODoOmWi+Wni+aZguOBqzDjgafliJ3mnJ/ljJbjgZXjgozjgotdXG4iLCB4KTsKCiAgICAvLyAy5Zue55uu77yabWFpbuOBpyB4ID0gMTAxIOOCkuS7o+WFpe+8iEdB77yJCiAgICB4ID0gMTAxOwogICAgcHJpbnRmKCJ4ID0gJWQgW0dBOiBtYWlu6Zai5pWw5YaF44Gn44Kw44Ot44O844OQ44OreOOBqzEwMeOCkuS7o+WFpeOBl+OBn11cbiIsIHgpOwoKICAgIC8vIDPlm57nm67vvJptb25kYWkxKDEwMikg44Gr44KI44KKIHggPSAxMDLvvIhHQe+8iQogICAgbW9uZGFpMSgxMDIpOwogICAgcHJpbnRmKCJ4ID0gJWQgW0dBOiBtb25kYWkx44GM5ZG844Gw44KM44CB5byV5pWwMTAy44KS44Gd44Gu44G+44G+44Kw44Ot44O844OQ44OreOOBuOS7o+WFpeOBl+OBn11cbiIsIHgpOwoKICAgIC8vIDTlm57nm67vvJptb25kYWkyIOOCkjPlm57lkbzjgbYg4oaSIHN0YXRpYyBjIOOBjCAxMOKGkjEx4oaSMTLihpIxMyDjgajlpInljJYKICAgIG1vbmRhaTIoKTsgIC8vIHggPSAxMAogICAgbW9uZGFpMigpOyAgLy8geCA9IDExCiAgICBtb25kYWkyKCk7ICAvLyB4ID0gMTIKICAgIHByaW50ZigieCA9ICVkIFtHUzogbW9uZGFpMuWGheOBrnN0YXRpY+WkieaVsGPjgYwxMOKGkjEx4oaSMTLihpIxM+OBqOWkieWMluOBl+OAgeacgOW+jOOBqzEy44GMeOOBuOS7o+WFpeOBleOCjOOBn11cbiIsIHgpOwoKICAgIC8vIDXlm57nm67vvJpmb3LmloflhoXjga7jg63jg7zjgqvjg6vlpInmlbAgeO+8iExB77yJCiAgICBmb3IgKGludCBpID0gMTAzOyBpIDwgMTA0OyBpKyspIHsKICAgICAgICBpbnQgeCA9IGk7ICAvLyDjg63jg7zjgqvjg6sgeCDjgYzlrqPoqIDjgZXjgozjgIHjgrDjg63jg7zjg5Djg6sgeCDjgpLpmqDjgZkKICAgICAgICBwcmludGYoInggPSAlZCBbTEE6IGZvcuaWh+WGheOBp+ODreODvOOCq+ODq+WkieaVsHjjgYzlrqPoqIDjgZXjgozjgIFpKDEwMynjgYzku6PlhaXjgZXjgozjgZ/jgILjgrDjg63jg7zjg5Djg6t444Gv6Zqg44KM44Gm44GE44KLXVxuIiwgeCk7CgogICAgICAgIC8vIDblm57nm67vvJptb25kYWkzIOOBq+OCiOOCiuODreODvOOCq+ODqyB4IOOBq+aIu+OCiuWApCAxMDQg44KS5Luj5YWl77yITEHvvIkKICAgICAgICB4ID0gbW9uZGFpMyhpKTsKICAgICAgICBwcmludGYoInggPSAlZCBbTEE6IG1vbmRhaTPjgafjgrDjg63jg7zjg5Djg6t444GMKyvjgZXjgowxM+OBq+OBquOCiuOAgeaIu+OCiuWApDEwNOOBjOODreODvOOCq+ODq3jjgbjku6PlhaXjgZXjgozjgZ9dXG4iLCB4KTsKICAgIH0KCiAgICAvLyA35Zue55uu77ya44Kw44Ot44O844OQ44OrIHgg44GvIG1vbmRhaTMg44Gr44KI44KKIDEy4oaSMTPvvIhHQe+8iQogICAgcHJpbnRmKCJ4ID0gJWQgW0dBOiBmb3LmloflhoXjga5tb25kYWkz5ZG844Gz5Ye644GX44Gn44Kw44Ot44O844OQ44OreOOBjDEy4oaSMTPjgavjgqTjg7Pjgq/jg6rjg6Hjg7Pjg4jjgZXjgozjgZ9dXG4iLCB4KTsKCiAgICByZXR1cm4gMDsKfQoK