私のCには、理解できない動作があります。
次のように配列を定義しました
long gainT1[21];
その変数を使用していくつかの作業を行います(したがって、初期化は必要ありません)。後で、変数に含まれる値を表示したいと思います。ここで問題が発生します: 2 番目の for によって表示される最初の値は、期待されるものではありません!
printf("CHECKING: gainT1[0]=%ld\n", gainT1[0]);
{
ptrdiff_t k;
for(k = 0; k < 16; k++) printf("[%td]=%ld ", k, gainT1[k]); printf("\n");
for(k = 0; k < 17; k++) printf("[%td]=%ld ", k, gainT1[k]); printf("\n"); // Here the for is going up to 16 instead of 15 previously
}
このコードは次を返します。
チェック: gainT1[0]=4207440
[0]=4207440 [1]=4207440 [2]=4294967295 [3]=139846275105333 [4]=16351504 [5]=0 [6]=139846268659528 [7]=139846277253568 [8]=16351504 [9]=3 [10]=128 [11]=139846277252304 [12]=4294967295 [13]=139846272645590 [14]=0 [15]=0
[0]=2356216002 [1]=4207440 [2]=4294967295 [3]=139846275105333 [4]=16351504 [5]=0 [6]=139846268659528 [7]=139846277253568 [8]=163515304 [9]=163515304 [10]=128 [11]=139846277252304 [12]=4294967295 [13]=139846272645590 [14]=0 [15]=0 [16]=6312008
コードの何が問題なのかわかりません。