根据 C99,以下代码是否合法?
...
for(....) {
int x = 4;
...
}
...
您可以假设在第 3 行之前从未声明过变量 x。
到目前为止,我只发现了以下内容,但我认为这还不够:
块允许将一组声明和语句组合成一个语法单元。具有自动存储持续时间的对象的初始化器和具有块范围的普通标识符的可变长度数组声明器在每次声明时被评估并将值存储在对象中(包括在没有初始化器的对象中存储不确定的值)按执行顺序到达,就好像它是一个语句,并且在每个声明中按照声明符出现的顺序。
从该 PDF 的第 145 页开始。