在我看来,定义总是意味着存储分配。
在下面的代码中,int i在程序堆栈上分配一个 4 字节(通常)的存储空间并将其绑定到i,i = 3并将 3 分配给该存储空间。但是因为goto,定义被绕过,这意味着没有为 分配存储i。
我听说局部变量是f()在它们所在的函数(在这种情况下)的入口处分配的,或者在定义点处分配的。
但无论哪种方式,如何i在尚未定义的情况下使用(根本没有存储空间)?执行时将值三分配到哪里i = 3?
void f()
{
goto label;
int i;
label:
i = 3;
cout << i << endl; //prints 3 successfully
}