解释这个代码为什么是这个结果。

img

#include <stdio.h>

int Square(int i)
{
    return i * i;
}

int main()
{
    int i = 0;         // 定义变量i_1
    i = Square(i);     // i_1 = 0;
    for (; i < 3; i++) // 每次循环i_1自增
    {
        static int i = 1; // 定义静态变量i_2,屏蔽i_1,初始化只执行一次
        i += Square(i);   // 相当于 i_2 += i_2 * i_2
        printf("%d,", i); // 输出i_2
        // i_2作用域结束
    }
    printf("%d\n", i);  // 输出i_1
    return 0;
}