fork download
  1. #include <stdio.h>
  2.  
  3. int x; // 3行目: グローバル変数(初期化なしのため自動的に0)
  4.  
  5. void mondai1(int b) {
  6. x = b; // 6行目
  7. }
  8.  
  9. void mondai2(void) {
  10. static int c = 10; // 10行目
  11. x = c; // 11行目
  12. c++; // 12行目
  13. }
  14.  
  15. int mondai3(int d) {
  16. x++; // 16行目: グローバル変数をインクリメント
  17. d++; // 17行目
  18. return d; // 18行目
  19. }
  20.  
  21. int main(void) {
  22. printf("x = %d [GS:3行目 初期値がないから0]\n", x);
  23.  
  24. x = 101; // 23行目
  25. printf("x = %d [GS:23行目で101を代入したから101]\n", x);
  26.  
  27. mondai1(102); // 26行目 (関数内: 6行目を実行)
  28. printf("x = %d [GS:26行目 mondai1(102)で6行目のx=bが実行され102]\n", x);
  29.  
  30. mondai2(); // 29行目
  31. mondai2(); // 30行目
  32. mondai2(); // 31行目 (関数内: 10〜12行目を3回実行)
  33. printf("x = %d [GS:29〜31行目でmondai2が3回実行され 11行目でstatic変数cの12が代入されたから12]\n", x);
  34.  
  35. for (int i = 103; i < 104; i++) { // 34行目
  36. int x = i; // 35行目: ローカル変数x(3行目のグローバル変数xをシャドーイング)
  37. printf("x = %d [LA:35行目でローカル変数xにi(103)を代入したから103]\n", x);
  38.  
  39. x = mondai3(i); // 38行目 (関数内: 16〜18行目を実行)
  40. printf("x = %d [LA:38行目でmondai3(103)の戻り値104がローカル変数xに代入されたから104]\n", x);
  41. }
  42.  
  43. printf("x = %d [GS:for文を抜け3行目のグローバル変数xを参照。38行目のmondai3実行時(16行目)で13に加算されたため13]\n", x);
  44.  
  45. return 0;
  46. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
x = 0 [GS:3行目 初期値がないから0]
x = 101 [GS:23行目で101を代入したから101]
x = 102 [GS:26行目 mondai1(102)で6行目のx=bが実行され102]
x = 12 [GS:29〜31行目でmondai2が3回実行され 11行目でstatic変数cの12が代入されたから12]
x = 103 [LA:35行目でローカル変数xにi(103)を代入したから103]
x = 104 [LA:38行目でmondai3(103)の戻り値104がローカル変数xに代入されたから104]
x = 13 [GS:for文を抜け3行目のグローバル変数xを参照。38行目のmondai3実行時(16行目)で13に加算されたため13]