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

标签 c++ c goto

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

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

输出:垃圾值

最佳答案

因为有两个a变量,第二个阴影在打印语句中的第一个。由于您跳过了它的初始化,因此输出是垃圾。
请注意,在 C++ 中跳过初始化是编译器错误,在 C 中,您只会获得您观察到的未初始化值。
另外,它是int main() ,不是 void main() .

关于c++ - 为什么我将垃圾值作为输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69049359/

相关文章:

c++ - 将 flex 和 bison 编译成 cpp

c++ - Visual C++ 2008 Boost 问题

html - 通过浏览器向正在监听端口的程序发送 HTTP 请求

language-agnostic - GOTO 仍然被视为有害吗?

c++ - 删除参数中包含字符串的文件

c++ - 为什么我的客户端会杀死我的服务器?

c - 特定的链表 C 函数

c - 在 C 中打印数组

c - 没有 Goto 的更好方法?

ruby-on-rails - Ruby on Rails : Best way to handle repeated error checking without goto?