C99:我可以在 'for' 中的 block 开头声明变量吗?

标签 c c99 c89

根据 C99,以下代码是否合法?

...
for(....) {
int x = 4;
...
}
...

您可以假设在第 3 行之前从未声明过变量 x。

C99 (PDF)

到目前为止,我只找到了以下内容,但我认为这还不够:

block 允许将一组声明和语句分组到一个语法单元中。 具有自动存储持续时间和可变长度的对象的初始值设定项 具有 block 作用域的普通标识符的数组声明符被计算,值是 存储在对象中(包括在没有 initializer) 每次在执行顺序到达声明时,就好像它是一个 声明,并在每个声明中按照声明符出现的顺序排列。

来自该 PDF 的第 145 页。

最佳答案

这在 C99 和 C89 中都是合法的。 看6.8.2,定义了复合语句

关于C99:我可以在 'for' 中的 block 开头声明变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1880745/

相关文章:

c - 在 C 结束时从指针位置读取十六进制输出

c - 执行free后进程的内存使用行为

c - 在 C 项目中导入/包含其他库

c - 在 C89 中为二维数组分配内存以使用函数打印矩阵

c - 使用clock()作为一个线程来为其他线程计时

比较c中的两个相等数组但输出显示不相等

将结果从 random() 转换为 int 导致 GCC 说 "warning: implicit function definition"。为什么?

c - 是否需要 %c fprintf 说明符来获取 int 参数

c - 为什么使用不在 UB 范围内的标识符而不是错误

c - 使用 ansi c 将对象存储在数组中?