从我学到的知识中,我应该获取数组的最小值,但是相反,我获取的是数组中不存在的大负数。

int size;
size = sizeof(array) / sizeof(array[0]);

int min;
min = array[0];

for(int i = 1; i <= size; i++) {
    if(array[i] < min){
        min = array[i];
    }
}

但是由于某种原因,我得到一个很大的负数:-9.25596e + 061

===============>>#1 票数:6 已采纳

for(int i = 1; i <= size; i++) {
                //^^^^array index out of bound, since array index starts from 0
   if(array[i] < min){
      min = array[i];
   }
}

您应该只比较数组中的元素。 您试图访问不属于该数组的内存,因此该内存中的值很奇怪。

您的代码应如下所示:

int min = array[0];
for(int i = 1; i < size; i++) {
   if(array[i] < min){
      min = array[i];
   }
}

===============>>#2 票数:0

比较时, <= size表示您要在数组末尾迭代1。 它很可能获得了一些非常大的垃圾值,这成为最小值。

for (int i = 1; i < size; ++i) { /* ... */ }获得所需的内容。

  ask by user12074577 translate from so

未解决问题?本站智能推荐: