#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[G:初期の値]\n " , x
) ; x = 101 ;
printf ( "x = %d[G:前行でx=101を代入]\n " , x
) ;
mondai1( 102 ) ;
printf ( "x = %d[G:前行で関数mondai1呼び出して、x=102を代入]\n " , x
) ;
mondai2( ) ;
mondai2( ) ;
mondai2( ) ;
printf ( "x = %d[G:前3行で関数mondai2を3回呼び出して戻り値を代入、x=cの後にc++されているから戻り値は+2]\n " , x
) ;
for ( int i = 103 ; i < 104 ; i++ ) {
int x = i;
printf ( "x = %d[L:前行で変数iを代入した値]\n " , x
) ; x = mondai3( i) ;
printf ( "x = %d[L:前行で関数mondai3を呼び出して戻り値を代入、戻り値+1]\n " , x
) ; }
printf ( "x = %d[G:31行目の後に関数mondai3を1回実行した値]\n " , x
) ; return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmludCB4OwoKdm9pZCBtb25kYWkxKGludCBiKSB7CiAgICB4ID0gYjsKfQoKdm9pZCBtb25kYWkyKHZvaWQpIHsKICAgIHN0YXRpYyBpbnQgYyA9IDEwOwogICAgeCA9IGM7CiAgICBjKys7Cn0KCmludCBtb25kYWkzKGludCBkKSB7CiAgICB4Kys7CiAgICBkKys7CiAgICByZXR1cm4gZDsKfQoKaW50IG1haW4odm9pZCkgewogICAgcHJpbnRmKCJ4ID0gJWRbRzrliJ3mnJ/jga7lgKRdXG4iLCB4KTsKICAgIHggPSAxMDE7CiAgICBwcmludGYoInggPSAlZFtHOuWJjeihjOOBp3g9MTAx44KS5Luj5YWlXVxuIiwgeCk7CgogICAgbW9uZGFpMSgxMDIpOwogICAgcHJpbnRmKCJ4ID0gJWRbRzrliY3ooYzjgafplqLmlbBtb25kYWkx5ZG844Gz5Ye644GX44Gm44CBeD0xMDLjgpLku6PlhaVdXG4iLCB4KTsKCiAgICBtb25kYWkyKCk7CiAgICBtb25kYWkyKCk7CiAgICBtb25kYWkyKCk7CiAgICBwcmludGYoInggPSAlZFtHOuWJjTPooYzjgafplqLmlbBtb25kYWky44KSM+WbnuWRvOOBs+WHuuOBl+OBpuaIu+OCiuWApOOCkuS7o+WFpeOAgXg9Y+OBruW+jOOBq2MrK+OBleOCjOOBpuOBhOOCi+OBi+OCieaIu+OCiuWApOOBrysyXVxuIiwgeCk7CgogICAgZm9yIChpbnQgaSA9IDEwMzsgaSA8IDEwNDsgaSsrKSB7CiAgICAgICAgaW50IHggPSBpOwogICAgICAgIHByaW50ZigieCA9ICVkW0w65YmN6KGM44Gn5aSJ5pWwaeOCkuS7o+WFpeOBl+OBn+WApF1cbiIsIHgpOwogICAgICAgIHggPSBtb25kYWkzKGkpOwogICAgICAgIHByaW50ZigieCA9ICVkW0w65YmN6KGM44Gn6Zai5pWwbW9uZGFpM+OCkuWRvOOBs+WHuuOBl+OBpuaIu+OCiuWApOOCkuS7o+WFpeOAgeaIu+OCiuWApCsxXVxuIiwgeCk7CiAgICB9CgogICAgcHJpbnRmKCJ4ID0gJWRbRzozMeihjOebruOBruW+jOOBq+mWouaVsG1vbmRhaTPjgpIx5Zue5a6f6KGM44GX44Gf5YCkXVxuIiwgeCk7CiAgICByZXR1cm4gMDsKfQ==