0

根据我所学到的,我应该得到数组的最小值,但我得到的却是一个很大的负数,它在我的数组中不存在。

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

4

2 回答 2

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];
   }
}
于 2013-04-16T01:17:44.257 回答
0

进行比较时,<= size意味着您将 1 迭代到数组的末尾。它很可能会获得一些非常巨大的垃圾价值,这将成为最低限度。

用来for (int i = 1; i < size; ++i) { /* ... */ }获得你需要的东西。

于 2013-04-16T01:19:30.163 回答