Что происходит в C, когда вы создаете массив отрицательной длины?
Например:
int n = -35;
int testArray[n];
for(int i = 0; i < 10; i++)
testArray[i]=i+1;
Этот код будет компилироваться (и не выдает никаких предупреждений при включенном -Wall) , и кажется, что вы можете без проблем назначить testArray [0]
. Присвоение прошлого, которое дает либо segfault, либо недопустимую ошибку инструкции, и чтение чего-либо из массива говорит «Прервать ловушку» (я не знаком с этим). Я понимаю, что это несколько академично и (надеюсь) никогда не появится в реальной жизни, но есть ли какой-то особый способ, который стандарт C говорит для обработки таких массивов, или это зависит от компилятора к компилятору?