变量保持其状态,即使未声明为静态

jin*_*ngo 2 c

我正在玩静态关键字.在下面的代码中,我无法弄清楚为什么x在状态和增量之前保存它.我原本打算打印1次树.据我所知,如果我将x声明为静态,就会发生这样的行为.

void print_it(void);

    int main (int argc,  const char * argv[])
    {
        print_it();
        print_it();
        print_it();
        exit(EXIT_SUCCESS);
    }

    void print_it(void)
    {
        int x;
        printf("%d\n", x++);
    }
Run Code Online (Sandbox Code Playgroud)

Aam*_*mir 7

您尚未将x初始化为任何值.因此,初始值x将是垃圾,并且当它发生时,此垃圾每次都会增加,因为它可能每次都使用相同的内存位置.

尝试将代码更改为:

void print_it(void);
int main (int argc,  const char * argv[])
{
    print_it();
    print_it();
    print_it();
    exit(EXIT_SUCCESS);
}

void print_it(void)
{
    int x = 0;
    printf("%d\n", x++);
}
Run Code Online (Sandbox Code Playgroud)