C变量声明的地方

可能重复:
C中的变量声明放置

我真的不明白为什么当我在下面的剪切代码中声明变量’m’时为什么它不起作用???我在使用之前声明m所以这是什么意思? 谢谢

int main(){ int a[] = {2,-4,6,47,59,-6,0}; sort(a, 7); int m; for(m = 0; m < 7; m++){ printf("%d ",a[m]); } } 

但是,如果我在数组上方的beggining处放置声明,它就可以工作。

看起来您正在ANSI C模式下进行编译。 在C89中,仅在块的开头允许变量声明。

自C99以来,此限制已被删除。 使用-std=c99进行编译,这将允许您在任何地方声明变量。

据我所知,所有声明必须高于代码

您可能正在使用部分支持C99的编译器(或根本不支持它),其中禁止就地变量声明。

使用这样的编译器需要您在“可执行”代码之前声明变量。

这是C89和之前的限制。

实际上不是答案,但我还不能对问题发表评论。 我同意上面关于C实现的人们的回答;重新使用会导致错误。 我建议你尝试的是(int m = 0,…)有两个原因:看它是否编译,以及范围(从它的外观来看你不需要在for循环之外)希望这有助于