为什么我将垃圾值作为输出?

Spa*_*ark 3 c c++ goto

为什么输出不是10甚至5??

void main()
{
    int a=10;
    goto here;
    {
    int a=5;
    here:
        printf("%i",a);
    }
}

Run Code Online (Sandbox Code Playgroud)

输出:垃圾值

Qui*_*mby 13

因为有两个a变量,所以在打印语句中第二个变量会影响第一个变量。由于您跳过了它的初始化,因此输出是垃圾。

请注意,在 C++ 中跳过初始化是一个编译器错误,在 C 中,您只会得到您观察到的未初始化值。

此外,它是int main(),不是void main()