Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Pętla for. Deklaracja i definicja zmiennej licznika.

Ostatnio zmodyfikowano 2015-10-18 18:59
Autor Wiadomość
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:

C/C++
for( int i = 0; i < 10; i++ )
{
    cout << i << endl; //wyświetla liczby od 0 do 9
}

for( int i; i < 10; i++ )
{
    cout << i << endl; //wyświetla liczby od 2 do 9
}

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.
P-138783
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.
P-138784
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ą:
C/C++
int a = 10;
int b = 20;
No i teoretycznie to nie powinno mieć żadnego wpływu na pętlę.
Ale jednak. Pętla wtedy wcale się nie wykonuje.
P-138785
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...
P-138786
carlosmay
» 2015-10-18 17:01:01
Wystarczy, że pod  ' i ' będzie wielokrotność zakresu typu int plus 2
P-138788
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.
P-138804
« 1 »
  Strona 1 z 1