C-Struktura-Inicjalizacja

0

Cześć

W pewnej książce napisane jest, że jeżeli zainicjalizujemy zmienną strukturalną w ten sposób:

struct time
{
    int h;
    int m;
};

struct time time_now={ };

to wartości będą nieokreślone.Ale sprawdziłem zarówno pod Windowsem jak i pod Linuxem i zawsze wartość tych pól jest równa 0.
Nieokreślona jest gdy nie zainicjalizujemy zmiennej strukturalnej.

Więc jak to w końcu jest, bo ma to dla mnie znaczenie.

1

W C++ inicjalizacja takiej klasy (pod) poprzez {} gwarantuje wypełnienie jej elementów zerami (value-initialization).

W C, o ile się nie mylę, taka inicjalizacja nie jest w ogóle legalna - trzeba zainicjalizować co najmniej jeden element jawnie, np. {0}; wtedy reszta zostanie uzupełniona zerami (a konkretniej, zostanie zainicjalizowana tak jakby to była zmienna globalna).

0

Ok dzięki.
Ale co znaczy że nie jest legalna.
Jeżeli da się tak zrobić poprzez { } tak samo jak w przypadku tablicy, że elementy będą równe 0, to jak może nie być legalna

1 użytkowników online, w tym zalogowanych: 0, gości: 1