Я наткнулся на странный опыт программирования на Си. Рассмотрим этот код:
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
подмассива является вполне допустимым способом ссылки на элемент перед этим массивом в большем массиве. Другая причина в том, что если индекс недопустим, программа недопустима, но в большинстве реализаций вы получите тихое плохое поведение, а не ошибку вне допустимого диапазона.