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 に答える