最后一个循环忽略了IF语句

时间:2014-04-14 21:18:31

标签: c

我尝试编写一段代码,它将占用6个输入,并在完成时返回最小和最大的数字。我遇到的问题是,在第6个循环期间,无论我输入什么数字,它都会在IF语句中覆盖我的_max变量忽略条件。

#include <stdio.h>
int main()
{
    int     i;
    int     _min;
    int     _max;
    int     input[6];
            _min=20;
            _max=0;

    for(i=1;i<=6;i++)
    {
        scanf("%d",&input[i]);
        if(input[i]<_min)
            {_min=input[i];}
        if(input[i]>_max)
            {_max=input[i];}
        printf("min:%d max:%d\n",_min,_max);
    }
    return 0;
}

2 个答案:

答案 0 :(得分:2)

这就是你想要的......循环遍及所有这些。

for(i=0;i<6;i++)

答案 1 :(得分:0)

这是因为数组的元素编号为0到5,而不是1到6。

因此,您按此顺序定义了变量:

int     _min;
int     _max;     <----
int     input[6];

...当您写入input[6]时,您实际上是在input[5]之后写入内存,_maxinput[7]占用。我想如果你写信给_min,你会发现{{1}}发生了同样的事情。

(但是,请注意,实际的变量分配是依赖于编译器和平台的。当数据在溢出缓冲区时结束时,并不容易判断)。