C ++ niepodpisane liczby całkowite

C ++ niepodpisane liczby całkowite
Typ danych liczb całkowitych w C ++ jest dalej podzielony na wiele podtypów. Jednym z takich podtypów są niepodpisane liczby całkowite. Niepodpisane liczby całkowite są w stanie przechowywać tylko pozytywne liczby. Preferowane są niepodpisane liczby całkowite w C ++ podczas manipulowania bitami w systemach operacyjnych, ponieważ masz ograniczoną przestrzeń do przechowywania. Ponadto mogą być również używane do indeksowania tablicy, ponieważ wskaźnik tablicy nigdy nie może być ujemny. Ten artykuł poświęcony jest dyskusji na temat niepodpisanych liczb całkowitych w C ++ w Ubuntu 20.04.

Rozmiar niepodpisanych liczb całkowitych w C ++:

Rozmiar typowej liczby całkowitej w C ++ wynosi 4 bajty. Aby to potwierdzić, możesz spojrzeć na następujący fragment kodu:

W tym fragmencie kodu właśnie użyliśmy instrukcji „Cout” z funkcją „sizeof”. Parametr, który zaimplementowaliśmy do tej funkcji, to „Unsigned Int”. Oznacza to, że to stwierdzenie zwróci rozmiar niepodpisanej liczby całkowitej w bajtach.

Po wykonaniu tego fragmentu kodu C ++ otrzymaliśmy dane wyjściowe pokazane na następującym obrazie, który potwierdza, że ​​liczba całkowita w C ++ ma rozmiar 4 bajtów:

Jak ogłosić niepodpisaną liczbę całkowitą w C++?

Niepodarowane liczby całkowite można bardzo łatwo ogłosić w C++. Możesz zobaczyć następujący fragment kodu deklaruje niepodpisaną liczbę całkowitą w C ++ w Ubuntu 20.04:

W tym fragmencie kodu zadeklarowaliśmy bez podpisaną liczbę całkowitą z instrukcją „unsigned int var” i przypisaliśmy do niego wartość „255”. Następnie użyliśmy instrukcji „Cout”, aby wyświetlić wartość tej niepodpisanej liczby całkowitej na terminalu.

W których scenariusze powinniśmy unikać używania niepodpisanych liczb całkowitych w C++?

Istnieją pewne sytuacje, w których użycie niepodpisanych liczb całkowitych powinno być ściśle unikać w C ++, ponieważ w ten sposób może prowadzić do niektórych bardzo błędnych wyjść. Nie można wykryć tych błędów, patrząc na kod C ++. Ponadto nie można ich również wykryć w czasie kompilacji. Zamiast tego będziesz mógł złapać te błędy tylko po wykonaniu kodu C ++. Spójrzmy na niektóre z tych scenariuszy, abyś mógł uniknąć używania niepodpisanych liczb całkowitych w C ++.

Scenariusz nr 1: Przypisanie liczby ujemnej do zmiennej bez podpisanej liczby całkowitej:

Niepodpisane liczby całkowite są używane do przechowywania tylko nieujemnych liczb całkowitych. Jednak programista może nadal przypisać liczbę ujemną do zmiennej bez podpisu. Ta liczba ujemna jest zawsze owinięta do najbliższej liczby w zakresie. Ta koncepcja jest znana jako pakowanie modulo. W tym przypadku nie jest generowany błąd, ale wartość, którą otrzymujesz. Możesz przejrzeć następujący fragment kodu, aby to zrozumieć:

W tym fragmencie kodu przypisaliśmy wartość „-1” do zmiennej niepodpisanej. Następnie, aby sprawdzić, czy prawidłowa wartość jest drukowana na terminalu, czy nie, użyliśmy instrukcji „Cout” ze zmienną „VAR”.

Po wykonaniu tego kodu dowiedzieliśmy się, że wartość zmiennej liczby całkowitej stała się „4294967295” zamiast „-1”, jak pokazano na poniższym obrazku:

Scenariusz nr 2: Wykonanie odejmowania dwóch niepodpisanych liczb całkowitych, w których liczba do odjęcia jest większa niż liczba, którą należy odejmować:

Ilekroć wykonujemy odejmowanie dwóch liczb całkowitych w sytuacji, w której pierwsza liczba jest mniejsza niż druga, zawsze otrzymujemy ujemne wyjście. Dlatego w tej sytuacji nigdy nie powinniśmy korzystać z niepodpisanych liczb całkowitych. Poniższy fragment kodu pokazuje to:

W tym fragmencie kodu mamy dwa niepodpisane liczby całkowite, „var1” i „var2”, których wartości to odpowiednio „2” i „7”. Chcieliśmy odjąć „2” od „7”. Rezultatem tego odejścia jest „-5”. Będziesz jednak musiał wykonać ten fragment kodu, aby dowiedzieć się, jak to odejmowanie działa z niepodpisanymi liczbowymi.

Wykonanie tego fragmentu kodu wytworzyło wynik pokazany na poniższym obrazku. Ponownie, chociaż nie otrzymaliśmy żadnego komunikatu o błędzie, nasze wyjście nadal okazało się niepoprawne.

Scenariusz nr 3: Korzystanie z niepodpisanych liczb całkowitych z instrukcjami warunkowymi:

Istnieją pewne warunki, które wykonują, gdy jedna zmienna jest mniejsza niż inna. Jeśli jednak porównamy liczby ujemne i dodatnie podczas korzystania z liczb całkowitych, wynik może być nieoczekiwany. Aby to rozwinąć, zaprojektowaliśmy następujący fragment kodu:

W tym fragmencie kodu mamy dwie niepodpisane zmienne liczb całkowitych, „var1” i „var2”, których wartości to odpowiednio „-1” i „1”. Następnie mamy instrukcję „jeśli”, która zostanie wykonana, jeśli „var1

Aby to być świadkiem, możesz zobaczyć dane wyjściowe pokazane na poniższym obrazie. To wyjście stwierdza, że ​​„var1” jest nie mniej niż „var2”, co jest logicznie i matematycznie niepoprawne:

Scenariusz # 4: wywoływanie funkcji z niepodpisanymi liczbami całkowitych:

Czasami definiujesz takie funkcje, które akceptują niepodpisane liczby całkowite jako parametry. Ponownie, jeśli ktoś przekazuje wartość ujemną do tej funkcji, nadal będzie wywoływana, ale przyniesie złe wyniki. Aby to przedstawić, zaimplementowaliśmy następujący fragment kodu:

W tym fragmencie kodu mamy funkcję o nazwie „DisplayNumber”, która akceptuje niepodpisaną liczbę całkowitą „num”. W ramach tej funkcji chcemy po prostu wydrukować wartość tej liczby na terminalu. W naszej funkcji „Main ()” wywołaliśmy tę funkcję z liczbą „-1”.

Możesz zobaczyć wyjście tego fragmentu kodu na obrazie pokazanym poniżej. Zgodnie z tym wyjściem wartość liczby to „4294967295” zamiast „-1”:

Scenariusz nr 5: Używanie niepodpisanych liczb całkowitych jako liczników pętli:

W ostatnim scenariuszu będziemy używać liczby całkowitej jako licznik pętli w C++. Możesz to zobaczyć z następującego fragmentu kodu:

W tym fragmencie kodu zdefiniowaliśmy prostą pętlę „dla”, której iterator jest bez podpisową liczbą całkowitą, i zmniejszyliśmy tę niepodpisaną liczbę całkowitą w każdej iteracji. Podczas wykonywania tego kodu utknęliśmy w nieskończonej pętli. Stało się to wyłącznie dlatego, że w ostatniej iteracji, gdy wartość iteratora została zmniejszona do „-1”, zamiast łamać pętlę, ten iterator został owinięty do najbliższej liczby całkowitej, której wartość była większa niż „5”. Dzieje się to w każdej iteracji, dlatego mamy tego rodzaju wyjście.

Wniosek:

W tym artykule chcieliśmy porozmawiać o różnych aspektach używania niepodpisanych liczb całkowitych w C ++ w Ubuntu 20.04. Najpierw podzieliliśmy z tobą rozmiar niepodpisanych liczb całkowitych w C ++, a następnie ich deklaracja. Następnie wyjaśniliśmy różne scenariusze, w których użycie niepodpisanych liczb całkowitych należy ściśle unikać, podkreślając problemy, które mogą spowodować. Dlatego po przejrzeniu tego artykułu łatwo rozróżniasz sytuacje, w których należy i nie należy używać niepodpisanych liczb całkowitych. Mamy nadzieję, że ten artykuł uznałeś za przydatne i sprawdź wskazówkę Linux, aby uzyskać więcej artykułów pouczających.