Witam, przychodzę do was z pytaniem o sensowność użycia unsigned na zmiennej, której z góry wiadomo, że będzie przechowywać małe liczby jak 10, 100, 1,000, 10,000 Czy użycie go ma jakikolwiek wpływ na kod, poza brakiem możliwości korzystania z liczb ujemnych? Jedyne co mi przychodzi do głowy, to to, że podczas operowania na tablicach przypadkiem nie odwołamy się do ujemnego wiersza.
jedyny wpływ jaki ma to na kod to inne instrukcje dzielenia i mnożenia. Dodawanie i odejmowanie dla liczb ze znakiem i bez znaku ma wspólna instrukcje.
dodatkowo kompilator jak masz odpowiednio warny ustawione podpowie Ci że coś jest nie tak jakbyś chciał wyjść poniżej 0. No i zyskujesz też wyższy gorny zakres itp.
Przy operowaniu na tablicach to może lepiej użyć typów semantycznych jak np. size_t
? (też jest unsigned, ale lepiej oddaje że chodzi o rozmiar tablicy/index). Poza tym jak się przyzwyczaisz do unsigned w pętlach to łatwiej jest zrozumieć iteratory...
Jeżeli natomiast liczba ma służyć do obliczeń a nie indeksacji, i wiesz że się zmieścisz w int, dajesz int i się nie przejmujesz ;)
indeksy i rozmiary tablic powinny być typu size_t
. do tego ten typ służy, i warto się przyzwyczaić.
jest to zgodnie ze standardem typ unsigned
.