Witam,
pisałem program w C na PC i w międzyczasie natknąłem się na niespodziankę z przepełnianiem zmiennej typu
unsigned int.
Zmienna typu
unsigned short int zachowuje się w porządku, natomiast przepełnienie zmiennej
unsigned int odbywa się jakby to była zmienna ze znakiem
(signed). Nie mogę zrozumieć dlaczego tak się dzieje.
Przygotowałem fragmenty dla obu typów zmiennych, żeby zademonstrować o co chodzi:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W konsoli otrzymujemy zamierzone wartości:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W konsoli otrzymujemy tym razem niezamierzone wartości:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Dlaczego w drugim przykładzie zmienna "b" nie zeruje się po dodaniu jedynki?