今日私はgccと奇妙な出会いがありました。配列の値が自動的に0に変更されました
float len[ELEM+1];
len[1]=1.0; len[2]=2.0; len[3]=3.0; //length
nod[1][1] = 1;
nod[1][2] = 2;
nod[2][1] = 2;
nod[2][2] = 3;
nod[3][1] = 3;
nod[3][2] = 4; //CONNECTIVITY
for(i=1;i<nnod;i++)
for(j=1;j<nfree;j++)
/* blah blah.........*/
変動:次のコードを検討
float len[ELEM+1];
len[1]=1.0; len[2]=2.0; len[3]=3.0; //length
nod[1][1] = 1;
nod[1][2] = 2;
nod[2][1] = 2;
nod[2][2] = 3;
nod[3][1] = 3;
nod[3][2] = 4; //CONNECTIVITY
LEN [1] = 1.0。 len [2] = 2.0;
for(i=1;i<=nnod;i++)
for(j=1;j<=nfree;j++)
/* blah blah.........*/
唯一の違いはbold.The問題で強調表示され、このです 長さが後に印刷される場合、最初のコード印刷がlen [1]とlen [2](および式でそれらを使用して)0.0000として2番目のコードが印刷され、これらの変数の正しい値を使用しています。
何が問題なのですか。私はまったく混乱しています.--
注:lenは他の場所では変更されません。
あなたが削除した関連情報の量のためにあなたの質問は非常に不明です。この問題を示す最小限でコンパイル可能なコードサンプルを投稿して、自分自身で見ることができますか?また、CおよびC++配列インデックスではゼロから始まることに注意してください。 –
問題を示す実際のコンパイル可能なコードを投稿してください。 –
と仮定しないでください。 lenがあなたが思っていた値と違う値になった場合は、他のどこかで*変更されます。デバッグの最も基本的な事実の1つは、コードに関するあなたの前提が*間違っているためにバグが存在することです。そして、あなたは明らかに、バグがどこにあるか、そうでないかを伝えるためにこれらの前提を信用できません。 – jalf