私はC++でダイスゲームを作っていますが、私のプログラムにはいくつかの配列があります。
die[5] = { (rand()%6)+1, (rand()%6)+1, (rand()%6)+1, (rand()%6)+1, (rand()%6)+1 };
そして、私はアレイを使用します
cout<<"First die: "<< die[0] <<"\n"
等
しかし、プログラムを実行すると、最後の配列は常に0を出力しますが、これを修正する方法はありますか?
あなたは実際には多くの情報を提供していませんが、ここに私の推測があります:
サイズNの配列には、常に0からN-1の範囲のN個の要素が含まれます。array [N]を使用すると、配列の範囲を超えてメモリにアクセスします。これは、未使用のメモリ(最良の場合)または他の何かに割り当てられたメモリである可能性があります。結果はトラブルです。こんなことしないで。
コードには次の行があります。
54. cout<<"Sixth die: " << die[5] <<"\n";
ダイには5つの要素しかないため、これは無効なアクセスです。したがって、0から4が有効なインデックスです。
これは実際には「未定義動作」です。プログラムはコアダンプ/アクセス違反を与える可能性がありますが、そうする必要はありません。代わりに、乱数またはゼロを出力することができます...