C变量声明的地方

时间:2012-10-27 19:51:05

标签: c

  

可能重复:
  Variable declaration placement in 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处放置声明,它就会起作用。

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

就我所知,在C中,所有声明都必须高于代码

答案 2 :(得分:1)

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

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

这是C89和之前的限制。

答案 3 :(得分:0)

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