2UL * 2UL = 4UL
Wniosek => wynik mnożenia dwu liczb "unsigned long" może się zmieścić w "unsigned long".
Warto pamiętać żeby zawsze dodawać przyrostek "UL" (albo "ul", "LU", "lu") do stałych "unsigned long".
Problem dużo poważniejszy to ... 4294967296 ... ta wartość wymaga 33 bitów, więc na pewno nie zmieści się w "unsigned long".
Kompilator powinien się wściec (zgłosić błąd) ... jeśli tego nie zrobił to nie wiadomo jaką stałą wstawił w to równanie.
Max. wartość która zmieści się w "unsigned long" to 4294967295UL ... czyli 0xFFFFFFFFUL
Wniosek => wynik mnożenia dwu liczb "unsigned long" może się zmieścić w "unsigned long".
Warto pamiętać żeby zawsze dodawać przyrostek "UL" (albo "ul", "LU", "lu") do stałych "unsigned long".
Problem dużo poważniejszy to ... 4294967296 ... ta wartość wymaga 33 bitów, więc na pewno nie zmieści się w "unsigned long".
Kompilator powinien się wściec (zgłosić błąd) ... jeśli tego nie zrobił to nie wiadomo jaką stałą wstawił w to równanie.
Max. wartość która zmieści się w "unsigned long" to 4294967295UL ... czyli 0xFFFFFFFFUL

