[C++] Pętla for. Deklaracja i definicja zmiennej licznika.
Ostatnio zmodyfikowano 2015-10-18 18:59
rav_jarosz2 Temat założony przez niniejszego użytkownika |
[C++] Pętla for. Deklaracja i definicja zmiennej licznika. » 2015-10-18 16:00:54 Witam. Programuję już jakiś czas. Zazwyczaj nie używam pętli for. Ale trafiłem na taki fenomen: for( int i = 0; i < 10; i++ ) { cout << i << endl; }
for( int i; i < 10; i++ ) { cout << i << endl; }
Może mi ktoś to wytłumaczyć? Bo słyszałem że przy deklaracji zmiennej automatycznie jest przypisywana jej wartość 0, więc powyższe przykłady powinny działać w ten sam sposób. |
|
carlosmay |
» 2015-10-18 16:07:07 for( int i; i < 10; i++ ) tutaj jest zainicjalizowana śmieciami, akurat traf tak chciał że wartość w miejscu deklaracji zmiennej 'i' wynosi 2. Na skompilowanie kodu pozwolą tylko kompilatory, które nie pilnują inicjalizacji zmiennych. statyczne są inicjalizowane zerem. |
|
rav_jarosz2 Temat założony przez niniejszego użytkownika |
» 2015-10-18 16:09:21 A od czego zależy ten traf? Dlaczego akurat 2? Co ma na to wpływ? To siedzi w RAM-ie czy gdzie? EDIT: Co ciekawe tak dla picu napisałem sobie przed pętlą: No i teoretycznie to nie powinno mieć żadnego wpływu na pętlę. Ale jednak. Pętla wtedy wcale się nie wykonuje. |
|
killjoy |
» 2015-10-18 16:27:07 Używanie niezainicjalizowanych zmiennych to UB. Wynik kodu równie dobrze może zależeć, od tego co siedziało w pamięci, jak i od fazy księżyca... |
|
carlosmay |
» 2015-10-18 17:01:01 Wystarczy, że pod ' i ' będzie wielokrotność zakresu typu int plus 2 |
|
rav_jarosz2 Temat założony przez niniejszego użytkownika |
» 2015-10-18 18:59:16 Chyba najbezpieczniej będzie ręcznie do każdej zmiennej przypisywać 0 na początek niż zaufać IDE. Dzięki wielkie. |
|
« 1 » |