在输入一个语句块时是否会创建一个新的Stack Frame?

可能重复:
在C中,大括号是否作为堆栈框架?

int main() { int i=10; { int i=100; printf("%d", i); } } 

内部“{”和“}”会创建一个新的堆栈帧吗?

这完全取决于实现,但对于那里的实现,答案是否定的。 两个i变量通常由同一堆栈帧中的两个单独变量实现,尽管在这种特定情况下,第一个i可能完全被省略。

只有在调用子例程时才需要创建堆栈帧(在i386上)(即使它仅用于返回地址)。 在您的情况下不会发生这种情况。

只有编译器感到痒。 当然不涉及语言要求。 更具体地说,我无法想到任何编译器会在这里推动框架的冲动,除非为大量本地人优化存储。 编译器完全能够在没有运行时帧的情况下管理名称。

也许。 也许不是。 语言不需要它,因此编译器可以随意做任何事情。