私はCプログラミングの奇妙な経験に出会いました。次のコードを検討してください。
int main(){
int array1[6] = {0, 1, 2, 3, 4, 5};
int array2[6] = {6, 7, 8, 9, 10, 11};
printf("%d\n", array1[-1]);
return 0;
}
これをコンパイルして実行しても、エラーや警告は表示されません。私の講師が言ったように、配列インデックス-1
は別の変数にアクセスします。私はまだ混乱していますが、なぜプログラミング言語にはこの機能があるのですか?つまり、なぜ負の配列インデックスを許可するのですか?
-1
配列の要素を参照することは、より大きな配列でその配列の前の要素を参照するための完全に有効な方法であるということです。もう1つは、インデックスが無効な場合、プログラムは無効ですが、ほとんどの実装では、範囲外のエラーではなく、サイレントな悪い動作が発生するということです。