Объявление массива отрицательной длины

Что происходит в C, когда вы создаете массив отрицательной длины?

Например:

int n = -35;

int testArray[n];

for(int i = 0; i < 10; i++)
    testArray[i]=i+1;

Этот код будет компилироваться (и не выдает никаких предупреждений при включенном -Wall) , и кажется, что вы можете без проблем назначить testArray [0] . Присвоение прошлого, которое дает либо segfault, либо недопустимую ошибку инструкции, и чтение чего-либо из массива говорит «Прервать ловушку» (я не знаком с этим). Я понимаю, что это несколько академично и (надеюсь) никогда не появится в реальной жизни, но есть ли какой-то особый способ, который стандарт C говорит для обработки таких массивов, или это зависит от компилятора к компилятору?

15
задан jonmorgan 24 September 2010 в 00:21
поделиться