Mam bardzo proste pytanie, które mnie zaskakuje przez długi czas. Mam do czynienia z sieciami i bazami danych, więc wiele danych, którymi się zajmuję, to liczniki 32-bitowe i 64-bitowe (niepodpisane), 32-bitowe i 64-bitowe identyfikatory (również nie mają znaczącego odwzorowania znaku). Praktycznie nigdy nie mam do czynienia z prawdziwymi słowami, które można wyrazić jako liczby ujemne.
Ja i moi współpracownicy rutynowo używamy niepodpisanych typów, takich jak uint32_t
i uint64_t
do tych spraw, a ponieważ tak się często zdarza, używamy ich również do indeksów tablic i innych typowych liczb całkowitych.
Jednocześnie różne przewodniki kodowania, które czytam (np. Google), zniechęcają do używania niepodpisanych typów liczb całkowitych i, o ile wiem, ani Java, ani Scala nie mają typów liczb całkowitych bez znaku.
Nie mogłem więc zorientować się, co należy zrobić: używanie podpisanych wartości w naszym środowisku byłoby bardzo niewygodne, a jednocześnie kodowanie przewodników, aby nalegać na zrobienie tego dokładnie.