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