#include <stdio.h>
int x; // 3行目: グローバル変数(初期化なしのため自動的に0)
void mondai1( int b) {
x = b; // 6行目
}
void mondai2( void ) {
static int c = 10 ; // 10行目
x = c; // 11行目
c++; // 12行目
}
int mondai3( int d) {
x++; // 16行目: グローバル変数をインクリメント
d++; // 17行目
return d; // 18行目
}
int main( void ) {
printf ( "x = %d [GS:3行目 初期値がないから0]\n " , x
) ;
x = 101 ; // 23行目
printf ( "x = %d [GS:23行目で101を代入したから101]\n " , x
) ;
mondai1( 102 ) ; // 26行目 (関数内: 6行目を実行)
printf ( "x = %d [GS:26行目 mondai1(102)で6行目のx=bが実行され102]\n " , x
) ;
mondai2( ) ; // 29行目
mondai2( ) ; // 30行目
mondai2( ) ; // 31行目 (関数内: 10〜12行目を3回実行)
printf ( "x = %d [GS:29〜31行目でmondai2が3回実行され 11行目でstatic変数cの12が代入されたから12]\n " , x
) ;
for ( int i = 103 ; i < 104 ; i++ ) { // 34行目
int x = i; // 35行目: ローカル変数x(3行目のグローバル変数xをシャドーイング)
printf ( "x = %d [LA:35行目でローカル変数xにi(103)を代入したから103]\n " , x
) ;
x = mondai3( i) ; // 38行目 (関数内: 16〜18行目を実行)
printf ( "x = %d [LA:38行目でmondai3(103)の戻り値104がローカル変数xに代入されたから104]\n " , x
) ; }
printf ( "x = %d [GS:for文を抜け3行目のグローバル変数xを参照。38行目のmondai3実行時(16行目)で13に加算されたため13]\n " , x
) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgeDsgLy8gM+ihjOebrjog44Kw44Ot44O844OQ44Or5aSJ5pWw77yI5Yid5pyf5YyW44Gq44GX44Gu44Gf44KB6Ieq5YuV55qE44GrMO+8iQoKdm9pZCBtb25kYWkxKGludCBiKSB7CiAgICB4ID0gYjsgLy8gNuihjOebrgp9Cgp2b2lkIG1vbmRhaTIodm9pZCkgewogICAgc3RhdGljIGludCBjID0gMTA7IC8vIDEw6KGM55uuCiAgICB4ID0gYzsgICAgICAgICAgICAgLy8gMTHooYznm64KICAgIGMrKzsgICAgICAgICAgICAgICAvLyAxMuihjOebrgp9CgppbnQgbW9uZGFpMyhpbnQgZCkgewogICAgeCsrOyAgICAgIC8vIDE26KGM55uuOiDjgrDjg63jg7zjg5Djg6vlpInmlbDjgpLjgqTjg7Pjgq/jg6rjg6Hjg7Pjg4gKICAgIGQrKzsgICAgICAvLyAxN+ihjOebrgogICAgcmV0dXJuIGQ7IC8vIDE46KGM55uuCn0KCmludCBtYWluKHZvaWQpIHsKICAgIHByaW50ZigieCA9ICVkIFtHUzoz6KGM55uuIOWIneacn+WApOOBjOOBquOBhOOBi+OCiTBdXG4iLCB4KTsKICAgIAogICAgeCA9IDEwMTsgLy8gMjPooYznm64KICAgIHByaW50ZigieCA9ICVkIFtHUzoyM+ihjOebruOBpzEwMeOCkuS7o+WFpeOBl+OBn+OBi+OCiTEwMV1cbiIsIHgpOwogICAgCiAgICBtb25kYWkxKDEwMik7IC8vIDI26KGM55uuICjplqLmlbDlhoU6IDbooYznm67jgpLlrp/ooYwpCiAgICBwcmludGYoInggPSAlZCBbR1M6MjbooYznm64gbW9uZGFpMSgxMDIp44GnNuihjOebruOBrng9YuOBjOWun+ihjOOBleOCjDEwMl1cbiIsIHgpOwogICAgCiAgICBtb25kYWkyKCk7IC8vIDI56KGM55uuCiAgICBtb25kYWkyKCk7IC8vIDMw6KGM55uuCiAgICBtb25kYWkyKCk7IC8vIDMx6KGM55uuICjplqLmlbDlhoU6IDEw44CcMTLooYznm67jgpIz5Zue5a6f6KGMKQogICAgcHJpbnRmKCJ4ID0gJWQgW0dTOjI544CcMzHooYznm67jgadtb25kYWky44GMM+WbnuWun+ihjOOBleOCjCAxMeihjOebruOBp3N0YXRpY+WkieaVsGPjga4xMuOBjOS7o+WFpeOBleOCjOOBn+OBi+OCiTEyXVxuIiwgeCk7CiAgICAKICAgIGZvciAoaW50IGkgPSAxMDM7IGkgPCAxMDQ7IGkrKykgeyAvLyAzNOihjOebrgogICAgICAgIGludCB4ID0gaTsgLy8gMzXooYznm646IOODreODvOOCq+ODq+WkieaVsHjvvIgz6KGM55uu44Gu44Kw44Ot44O844OQ44Or5aSJ5pWweOOCkuOCt+ODo+ODieODvOOCpOODs+OCsO+8iQogICAgICAgIHByaW50ZigieCA9ICVkIFtMQTozNeihjOebruOBp+ODreODvOOCq+ODq+WkieaVsHjjgatpKDEwMynjgpLku6PlhaXjgZfjgZ/jgYvjgokxMDNdXG4iLCB4KTsKICAgICAgICAKICAgICAgICB4ID0gbW9uZGFpMyhpKTsgLy8gMzjooYznm64gKOmWouaVsOWGhTogMTbjgJwxOOihjOebruOCkuWun+ihjCkKICAgICAgICBwcmludGYoInggPSAlZCBbTEE6MzjooYznm67jgadtb25kYWkzKDEwMynjga7miLvjgorlgKQxMDTjgYzjg63jg7zjgqvjg6vlpInmlbB444Gr5Luj5YWl44GV44KM44Gf44GL44KJMTA0XVxuIiwgeCk7CiAgICB9CiAgICAKICAgIHByaW50ZigieCA9ICVkIFtHUzpmb3LmlofjgpLmipzjgZEz6KGM55uu44Gu44Kw44Ot44O844OQ44Or5aSJ5pWweOOCkuWPgueFp+OAgjM46KGM55uu44GubW9uZGFpM+Wun+ihjOaZgigxNuihjOebrinjgacxM+OBq+WKoOeul+OBleOCjOOBn+OBn+OCgTEzXVxuIiwgeCk7CiAgICAKICAgIHJldHVybiAwOwp9