从我所学到的,我应该得到数组的最小值,但是我得到一个在我的数组中不存在的大的负数。
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
答案 0 :(得分: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];
}
}
答案 1 :(得分:0)
进行比较时,<= size
表示您在数组末尾迭代1。它最有可能获得一些非常巨大的垃圾价值,并且成为最低价值。
使用for (int i = 1; i < size; ++i) { /* ... */ }
获取所需内容。