#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++; // グローバル x
d++; // ローカル d
return d;
}
int main( void ) {
// 1回目:x はグローバル、初期値 0(GA)
printf ( "x = %d [GA: グローバル変数は0で初期化される]\n " , x
) ;
// 2回目:x = 101 を代入(GA)
x = 101 ;
printf ( "x = %d [GA: mainで101を代入した]\n " , x
) ;
// 3回目:mondai1(102) により x = 102(GA)
mondai1( 102 ) ;
printf ( "x = %d [GA: mondai1で102を代入した]\n " , x
) ;
// 4回目:mondai2 を3回呼ぶ → static c が 10→11→12→13 と変化
mondai2( ) ; // x = 10
mondai2( ) ; // x = 11
mondai2( ) ; // x = 12
printf ( "x = %d [GS: static変数cが3回インクリメントされて12になった]\n " , x
) ;
// 5回目:for文内のローカル変数 x(LA)
for ( int i = 103 ; i < 104 ; i++ ) {
int x = i; // ローカル x
printf ( "x = %d [LA: for文内でi(103)を代入した]\n " , x
) ;
// 6回目:mondai3 によりローカル x に戻り値 104 を代入(LA)
x = mondai3( i) ;
printf ( "x = %d [LA: mondai3の戻り値104を代入した]\n " , x
) ; }
// 7回目:グローバル x は mondai3 により 12→13(GA)
printf ( "x = %d [GA: mondai3でグローバルxが++され13になった]\n " , x
) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmludCB4OwoKdm9pZCBtb25kYWkxKGludCBiKXsKICAgIHggPSBiOwp9Cgp2b2lkIG1vbmRhaTIodm9pZCl7CiAgICBzdGF0aWMgaW50IGMgPSAxMDsKICAgIHggPSBjOwogICAgYysrOwp9CgppbnQgbW9uZGFpMyhpbnQgZCl7CiAgICB4Kys7ICAgLy8g44Kw44Ot44O844OQ44OrIHgKICAgIGQrKzsgICAvLyDjg63jg7zjgqvjg6sgZAogICAgcmV0dXJuIGQ7Cn0KCmludCBtYWluKHZvaWQpIHsKCiAgICAvLyAx5Zue55uu77yaeCDjga/jgrDjg63jg7zjg5Djg6vjgIHliJ3mnJ/lgKQgMO+8iEdB77yJCiAgICBwcmludGYoInggPSAlZCBbR0E6IOOCsOODreODvOODkOODq+WkieaVsOOBrzDjgafliJ3mnJ/ljJbjgZXjgozjgotdXG4iLCB4KTsKCiAgICAvLyAy5Zue55uu77yaeCA9IDEwMSDjgpLku6PlhaXvvIhHQe+8iQogICAgeCA9IDEwMTsKICAgIHByaW50ZigieCA9ICVkIFtHQTogbWFpbuOBpzEwMeOCkuS7o+WFpeOBl+OBn11cbiIsIHgpOwoKICAgIC8vIDPlm57nm67vvJptb25kYWkxKDEwMikg44Gr44KI44KKIHggPSAxMDLvvIhHQe+8iQogICAgbW9uZGFpMSgxMDIpOwogICAgcHJpbnRmKCJ4ID0gJWQgW0dBOiBtb25kYWkx44GnMTAy44KS5Luj5YWl44GX44GfXVxuIiwgeCk7CgogICAgLy8gNOWbnuebru+8mm1vbmRhaTIg44KSM+WbnuWRvOOBtiDihpIgc3RhdGljIGMg44GMIDEw4oaSMTHihpIxMuKGkjEzIOOBqOWkieWMlgogICAgbW9uZGFpMigpOyAgLy8geCA9IDEwCiAgICBtb25kYWkyKCk7ICAvLyB4ID0gMTEKICAgIG1vbmRhaTIoKTsgIC8vIHggPSAxMgogICAgcHJpbnRmKCJ4ID0gJWQgW0dTOiBzdGF0aWPlpInmlbBj44GMM+WbnuOCpOODs+OCr+ODquODoeODs+ODiOOBleOCjOOBpjEy44Gr44Gq44Gj44GfXVxuIiwgeCk7CgogICAgLy8gNeWbnuebru+8mmZvcuaWh+WGheOBruODreODvOOCq+ODq+WkieaVsCB477yITEHvvIkKICAgIGZvciAoaW50IGkgPSAxMDM7IGkgPCAxMDQ7IGkrKyl7CiAgICAgICAgaW50IHggPSBpOyAgLy8g44Ot44O844Kr44OrIHgKICAgICAgICBwcmludGYoInggPSAlZCBbTEE6IGZvcuaWh+WGheOBp2koMTAzKeOCkuS7o+WFpeOBl+OBn11cbiIsIHgpOwoKICAgICAgICAvLyA25Zue55uu77yabW9uZGFpMyDjgavjgojjgorjg63jg7zjgqvjg6sgeCDjgavmiLvjgorlgKQgMTA0IOOCkuS7o+WFpe+8iExB77yJCiAgICAgICAgeCA9IG1vbmRhaTMoaSk7CiAgICAgICAgcHJpbnRmKCJ4ID0gJWQgW0xBOiBtb25kYWkz44Gu5oi744KK5YCkMTA044KS5Luj5YWl44GX44GfXVxuIiwgeCk7CiAgICB9CgogICAgLy8gN+Wbnuebru+8muOCsOODreODvOODkOODqyB4IOOBryBtb25kYWkzIOOBq+OCiOOCiiAxMuKGkjEz77yIR0HvvIkKICAgIHByaW50ZigieCA9ICVkIFtHQTogbW9uZGFpM+OBp+OCsOODreODvOODkOODq3jjgYwrK+OBleOCjDEz44Gr44Gq44Gj44GfXVxuIiwgeCk7CgogICAgcmV0dXJuIDA7Cn0KCg==