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