fork download
  1. #include <stdio.h>
  2. int x; // グローバル変数(初期値 0)
  3.  
  4. void mondai1(int b) {
  5. x = b;
  6. }
  7.  
  8. void mondai2(void) {
  9. static int c = 10; // 最初の1回だけ初期化
  10. x = c;
  11. c++;
  12. }
  13.  
  14. int mondai3(int d) {
  15. x++;
  16. d++;
  17. return d;
  18. }
  19.  
  20. int main(void) {
  21. printf("x = %d\n", x); // (1)
  22. x = 101;
  23. printf("x = %d\n", x); // (2)
  24.  
  25. mondai1(102);
  26. printf("x = %d\n", x); // (3)
  27.  
  28. mondai2(); // x=10, c=11
  29. mondai2(); // x=11, c=12
  30. mondai2(); // x=12, c=13
  31. printf("x = %d\n", x); // (4)
  32.  
  33. for (int i = 103; i < 104; i++) {
  34. int x = i; // ここでローカル変数 x が宣言される!(グローバルとは別物)
  35. printf("x = %d\n", x); // (5)
  36.  
  37. x = mondai3(i); // mondai3 に渡すのは d=i=103
  38. // → グローバル x++ (12→13)
  39. // → d++ = 104 を返す
  40. printf("x = %d\n", x); // (6) ← ここはローカル変数 x に 104 が代入されている
  41. }
  42.  
  43. printf("x = %d\n", x); // (7) グローバル x の値(13)
  44. return 0;
  45. }
  46.  
  47.  
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
x = 0
x = 101
x = 102
x = 12
x = 103
x = 104
x = 13