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
编译启用所有警告并将它们视为错误。 –