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