4

可能重复:
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]);
    }
}

但是,如果我将声明放在数组上方的开头,它就可以工作。

4

4 回答 4

5

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

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

于 2012-10-27T19:58:53.027 回答
2

据我所知,所有声明都必须在代码之上

于 2012-10-27T19:54:40.570 回答
1

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

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

这是 C89 和以前的限制。

于 2012-10-27T19:57:57.637 回答
0

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

于 2012-10-27T20:13:54.143 回答