我真的不明白为什么当我在下面的剪切代码中声明变量'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处放置声明,它就会起作用。
答案 0 :(得分:3)
看起来您正在以ANSI C模式进行编译。在C89中,仅在块的开头允许变量声明。
自C99起,此限制已被删除。使用-std=c99
进行编译,这将允许您在任何地方声明变量。
答案 1 :(得分:2)
就我所知,在C中,所有声明都必须高于代码
答案 2 :(得分:1)
您可能正在使用部分支持C99的编译器(或根本不支持它),其中禁止就地变量声明。
使用这样的编译器需要您在“可执行”代码之前声明变量。
这是C89和之前的限制。
答案 3 :(得分:0)
实际上不是答案,但我还不能对问题发表评论。 我同意上面关于C实现的人们的回答;重新使用是导致错误。我建议你尝试的是(int m = 0,...)有两个原因:看它是否编译,以及范围(从它的外观来看,你不需要在for循环之外的m) 希望这有帮助