#include <stdio.h>
int main()
{
int a = 10;
goto inside;
{
int a = 20;
{
inside:
printf("%d",a);
}
}
}
为什么它打印输出为 0,而不是 10?即使它寻找最近的范围,即。 int a = 20
没有明确执行。内存只包含int a = 10;
那为什么是 0 呢?
最佳答案
在点 printf
打电话,名字a
指的是该名称的第二个变量,即初始化为 20
的变量.外a
, 初始化为 10
,被隐藏。 printf
没有理由打印 10
.goto
语句跳过内部 a
的初始化,所以它永远不会被初始化为 20
.为它分配了空间,但它的值是任意垃圾。 0
正在打印的是内部a
的内容.它可以是任何东西。
关于c - 使用 goto 跳过范围变量初始化不会产生所需的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63276974/