为什么只有代码块给我 return 错误(0xc00000FD)?
Why only codeblocks give me return error(0xc00000FD)?
当我用 Codeblocks(GNU gcc 编译器)编译程序时,出现了这个错误:Process returned -1073741571 (0xC00000FD)
我在没有二进制搜索的情况下尝试过它并且它有效,但我不明白为什么当我插入二进制搜索时它会给我这个错误。
但是如果我用另一个编译器编译它(我在我的大学在线编译器上试过)它工作得很好。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
int v[n];
int i;
int aux;
int j;
printf("Quanti numeri vuoi inserire? \n");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("%d: ",i);
scanf("%d",&v[i]);
}
for(i=0;i<n;i++) {
printf("%d,",v[i]);
}
printf("\n");
for(j=0;j<n-1;j++) {
for(i=0;i<n-1;i++) {
if(v[i]>v[i+1]) {
aux = v[i];
v[i] = v[i+1];
v[i+1] = aux;
}
}
}
for(i=0;i<n;i++)
printf("%d ", v[i]);
//Binary search
int alto, basso, pos, ele, k;
alto = 0;
basso = n-1;
pos = -1;
printf("Mi dia un elemento da cercare:\n");
scanf("%d",&ele);
while(alto<=basso && pos==-1){
k=(alto+basso)/2;
if(v[k]==ele)
pos=k;
else
if(v[k]<ele)
alto=k+1;
else
basso=k-1;
}
if(pos==-1)
printf("Il numero inserito non e' presente");
else
printf("L'elemento e' presente in posizione %d del vettore", pos);
return 0;
}
int n;
int v[n];
你在这里有未定义的行为(UB)。
您声明了一个大小由未初始化变量设置的 VLA n
。
所以回答问题
Why only codeblocks give me return error(0xc00000FD)
答案是:因为确实如此。这是不可预测的。
当我用 Codeblocks(GNU gcc 编译器)编译程序时,出现了这个错误:Process returned -1073741571 (0xC00000FD)
我在没有二进制搜索的情况下尝试过它并且它有效,但我不明白为什么当我插入二进制搜索时它会给我这个错误。
但是如果我用另一个编译器编译它(我在我的大学在线编译器上试过)它工作得很好。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
int v[n];
int i;
int aux;
int j;
printf("Quanti numeri vuoi inserire? \n");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("%d: ",i);
scanf("%d",&v[i]);
}
for(i=0;i<n;i++) {
printf("%d,",v[i]);
}
printf("\n");
for(j=0;j<n-1;j++) {
for(i=0;i<n-1;i++) {
if(v[i]>v[i+1]) {
aux = v[i];
v[i] = v[i+1];
v[i+1] = aux;
}
}
}
for(i=0;i<n;i++)
printf("%d ", v[i]);
//Binary search
int alto, basso, pos, ele, k;
alto = 0;
basso = n-1;
pos = -1;
printf("Mi dia un elemento da cercare:\n");
scanf("%d",&ele);
while(alto<=basso && pos==-1){
k=(alto+basso)/2;
if(v[k]==ele)
pos=k;
else
if(v[k]<ele)
alto=k+1;
else
basso=k-1;
}
if(pos==-1)
printf("Il numero inserito non e' presente");
else
printf("L'elemento e' presente in posizione %d del vettore", pos);
return 0;
}
int n;
int v[n];
你在这里有未定义的行为(UB)。
您声明了一个大小由未初始化变量设置的 VLA n
。
所以回答问题
Why only codeblocks give me return error(0xc00000FD)
答案是:因为确实如此。这是不可预测的。