Люди, я думаю, я выброшу все мои скромные знания C. Посмотрите на этот код:Этот код C должен провалиться, но он работает. Почему это?
int main(int argc, char** argv, char** envp)
{
int aa;
srand(time(NULL));
int Num = rand()%20;
int Vetor[Num];
for (aa = 0; aa < Num; aa++)
{
Vetor[aa] = rand()%40;
printf("Vetor [%d] = %d\n", aa, Vetor[aa]);
}
}
Я думаю, что это должно бросить ошибку по двум причинам - во-первых, что я объявляя как Num и VETOR после выполнения команды (srand), второй, потому что я заявляю Vetor на основе Num, это не должно быть прав? потому что эти размеры массива не должны решаться во время выполнения, но во время компиляции?
Я действительно удивлен, что его работы, и если вы, ребята, могли бы объяснить, почему я могу реально использовать такие вещи, как это было бы здорово.
Использование GCC.
Что вы использовали, чтобы скомпилировать это? Если вы скомпилировали его с чем-то, что также компилирует C++, возможно, он просто сказал: «О, это законно, потому что C++ говорит, что это так». – corsiKa
@TotalFrickinRockstarFromMars, но это не является законным C++. –
@phresnel и что делает его не C++? – corsiKa