0
以下是我的C代碼。我不知道爲什麼數組中的索引0處的值(以及meds和maxs)在循環的最後一次迭代中發生了變化。請幫忙。索引0處的數組值在C的循環結尾處發生變化
對不起,添加太多的打印語句。這些主要是爲了調試。
#include<stdio.h>
#include<stdlib.h>
#define SZ 10000
typedef long long LL;
LL min(LL x, LL y)
{
return x<y?x:y;
}
LL max(LL x, LL y)
{
return x>y?x:y;
}
struct triangle
{
LL sm, md, lg;
};
int main()
{
int n, i, ans;
struct triangle obj[n];
LL mins[n], meds[n], maxs[n];
LL a, b, c;
scanf("%d%*c", &n);
for(i=0;i<n;i++)
{
scanf("%lld%lld%lld%*c", &a, &b, &c);
printf("Scanned : %lld%lld%lld\n", a, b, c);
obj[i].sm = mins[i] = min(a, min(b,c));
obj[i].lg = maxs[i] = max(a, max(b, c));
obj[i].md = meds[i] = max(min(a,b), min(max(a,b),c));
printf("min : %lld\t med = %lld\t max = %lld\n", mins[i], meds[i], maxs[i]);
printf("min[0] = %lld\n", mins[0]);
}
printf("Outside : min[0] = %lld\n", mins[0]);
printf("mins : ");
for(i=0;i<n;i++)
printf("%lld ", mins[i]);
printf("\n");
printf("meds : ");
for(i=0;i<n;i++)
printf("%lld ", meds[i]);
printf("\n");
printf("maxs : ");
for(i=0;i<n;i++)
printf("%lld ", maxs[i]);
printf("\n");
//printf("%d\n", ans);
return 0;
}
'n'有多大?你可能有堆棧溢出調用未定義的行爲。永遠不要依靠外部輸入!檢查可接受的範圍,但更好地動態分配陣列。看到[問],提供**所有**必要的信息。並將代碼剝離到[mcve]。 – Olaf
哪個循環?它如何改變?你可以發佈輸出,並提供最小的完整? – bipll
編譯啓用所有警告並將它們視爲錯誤。 –