Почему следующая программа дает мне неожиданный вывод.Неожиданный вывод в присутствии статического ключевого слова
static int x[] = {1,2,3,4,5,6,7,8};
int i;
for (i = 2; i < 6;++i)
{
x[x[i]] = x[i];
}
for (i = 0; i < 8;++i)
{
printf("%d",x[i]);
}
}
Ожидаю, что это будет 1, 2 3,4,5,6,7,8, но компилятор говорит: 1,2,3,3,5,6,7,8. Кстати, каково влияние static
на производительность массива?
Пройдите код в отладчике, следя за объявлениями переменных, особенно, что означает 'x [i]'. И помните, что индекс '3' является * четвертой * записью в массиве. –
И чтобы избежать путаницы в будущем коде, когда у вас есть вложенные циклы, не используйте одну и ту же переменную цикла. –
Это точный ожидаемый результат вашей программы, независимо от 'static', это не влияет. –