我的 C 有一种我不理解的行为。
我已经定义了一个数组如下
long gainT1[21];
我对那个变量做了一些工作(因此,不需要初始化),然后,我想显示它包含的值。问题来了:第二个 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
}
此代码返回:
检查:增益T1[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]=16351504 [9] [10]=128 [11]=139846277252304 [12]=4294967295 [13]=139846272645590 [14]=0 [15]=0 [16]=6312008
我无法弄清楚我的代码有什么问题。