fork download
  1. #include <stdio.h>
  2.  
  3. int x;
  4.  
  5. void mondai1(int b) {
  6. x = b;
  7. }
  8.  
  9. void mondai2(void) {
  10. static int c = 10;
  11. x = c;
  12. c++;
  13. }
  14.  
  15. int mondai3(int d) {
  16. x++;
  17. d++;
  18. return d;
  19. }
  20.  
  21. int main(void) {
  22. printf("x = %d [GS: 未初期化のグローバル変数は0で初期化されるため]\n", x);
  23. x = 101;
  24. printf("x = %d [GS: 23行目で101を代入したため]\n", x);
  25.  
  26. mondai1(102);
  27. printf("x = %d [GS:mondai1(102)内で102を代入したため]\n", x);
  28.  
  29. mondai2();
  30. mondai2();
  31. mondai2();
  32. printf("x = %d [GS: 静的変数c(初期値10)がmondai2の3回呼び出しで+1ずつ増え12が代入されたため]\n", x);
  33.  
  34. for (int i = 103; i < 104; i++) {
  35. int x = i;
  36. printf("x = %d [LA: 同名のローカル変数x(値103)がグローバル変数を覆い隠すため]\n", x);
  37. x = mondai3(i);
  38. printf("x = %d [LA: mondai3(103)の戻り値104がローカル変数xに代入されたため]\n", x);
  39. }
  40.  
  41. printf("x = %d [GS: forブロックを抜けグローバル変数x(mondai3内で+1された13)を参照するため]\n", x);
  42. return 0;
  43. }
  44.  
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
x = 0 [GS: 未初期化のグローバル変数は0で初期化されるため]
x = 101 [GS: 23行目で101を代入したため]
x = 102 [GS:mondai1(102)内で102を代入したため]
x = 12 [GS: 静的変数c(初期値10)がmondai2の3回呼び出しで+1ずつ増え12が代入されたため]
x = 103 [LA: 同名のローカル変数x(値103)がグローバル変数を覆い隠すため]
x = 104 [LA: mondai3(103)の戻り値104がローカル変数xに代入されたため]
x = 13 [GS: forブロックを抜けグローバル変数x(mondai3内で+1された13)を参照するため]