最近、C でプログラミングを始めましたが、誤って配列を '-1' に指定すると、配列が最後の要素に移動することがあることに気付きました。なぜこれが起こるのですか?
編集:例として、私は森林火災モデルを構築していました.時々、燃えている木が森の端にあったとき、エラーをスローすることなく、新しい燃えている木が森の反対側に現れました.
最近、C でプログラミングを始めましたが、誤って配列を '-1' に指定すると、配列が最後の要素に移動することがあることに気付きました。なぜこれが起こるのですか?
編集:例として、私は森林火災モデルを構築していました.時々、燃えている木が森の端にあったとき、エラーをスローすることなく、新しい燃えている木が森の反対側に現れました.
これは未定義の動作です。
コンパイラは、鼻から悪魔を飛ばすことができます。
実際には、これは通常、アレイの前にメモリにアクセスすることになり、クラッシュする可能性があります。
彼らはしません。C は、配列の外に出ていることをチェックしないだけです。その場合、結果は予測できません。このサイトを見て、リンクされているチュートリアルをチェックしてください(古いですが、良いです)。C のポインターと配列に関するチュートリアルへのリンクもあります。
C は最大のパフォーマンスを発揮するように設計された言語であるため、プログラマーが何をしているかを正確に理解していることを前提としています。補助輪も安全ネットもありません。これに慣れると解放されます。それまで恐るべし。それを続けて、何が起こっているのかを理解し、楽しんでください。