delkaracja w środu pętli for

delkaracja w środu pętli for
PI
  • Rejestracja:około 13 lat
  • Ostatnio:7 miesięcy
  • Postów:227
0

Mam taki prosty program:

Kopiuj
#include <iostream>
int main()
{
        for(int i=0;i<20;i++)
        {
                int b;
                b=b+1;
                std::cout<<b<<std::endl;
        }
}
 

Jak to jest, że zmienna nie jest kasowana każdorazowo po wyjściu z każdej iteracji pętli?
Według (tak przynajmniej mi się wydaje ) zasad powinna zostać usunięta po wyjściu z bloku i być inicjowana domyślnym zerem za każdym razem.

4G
  • Rejestracja:prawie 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:6
0

Zdaje mi się że albo to optymalizacja kompilatora albo zmienna alokuje się w tym samym miejscu (zerowane z automatu są tylko zmienne globalne).
Jak by co jestem amatorem ;)

Pisane z fona

twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
3

Zwykła zmienna (nie statyczna) podczas deklaracji nie ma żadnej gwarantowanej wartości. Co więcej, używanie takiej niezainicjalizowanej zmiennej to undefined behaviour.

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:mniej niż minuta
1
Kopiuj
c:\myprogs\cpp\test.cpp(7) : warning C4700: uninitialized local variable 'b' used

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.