Ao sombrear i
dentro do loop for, o seguinte código
#include <stdio.h>
int main()
{
for (int i = 1; i < 5; i++) {
printf("%d", i);
int i = i;
printf("%d ", i);
}
}
saídas:
10 20 30 40
Pelo meu entendimento de shadowing, deveria ter sido i
criado um novo com o valor igual ao anterior i
. Isso significa que a saída que eu esperava seria:
11 22 33 44
Além disso, o código parece armazenar o novo i
valor se você incrementá-lo.
#include <stdio.h>
int main()
{
for (int i = 1; i < 5; i++) {
printf("%d", i);
int i = i + 2;
printf("%d ", i);
}
}
isso produz:
12 24 36 48
Aparentemente, i
não está sendo redeclarado a cada iteração - funciona como uma variável que foi inicialmente 0
e depois incrementada a cada iteração.
O que está realmente acontecendo aqui? Como você prevê o comportamento?