質問です。現在猫でもわかるC言語プログラミングというので勉強しているのですが、 関数の再帰呼び出しというところで #include<stdio.h> int main() { static int i = 1; if (i <= 10) { printf("i = %d\n", i); i++; main(); } return 0; } というのがあり、これを実行すると i = 1 i = 2 ・・・ i = 10 になるとなっていて、試してみたところ確かにそうなるのですが、 main内でmainをもう一度呼び出した際に static int i = 1; の部分でなぜ再度 i に1が代入されないのでしょうか?