C ++ usignerte heltall

C ++ usignerte heltall
Heltalldatatypen i C ++ er videre delt inn i mange undertyper. En slik undertype er de usignerte heltallene. De usignerte heltallene er i stand til å lagre bare de positive hele tallene. De usignerte heltallene i C ++ er å foretrekke mens du manipulerer biter i operativsystemer siden du har begrenset lagringsplass. Dessuten kan de også brukes til indeksering av array, siden indeksen for en matrise aldri kan være negativ. Denne artikkelen er viet til diskusjonen om de usignerte heltallene i C ++ i Ubuntu 20.04.

Størrelsen på usignerte heltall i C ++:

Størrelsen på et typisk usignert heltall i C ++ er 4 byte. For å bekrefte dette, kan du se på følgende kodebit:

I dette kodebiten har vi nettopp brukt "cout" -uttalelsen med "størrelse" -funksjonen ". Parameteren som vi implementerte til denne funksjonen er "usignert int". Det betyr at denne uttalelsen vil returnere størrelsen på et usignert heltall i byte.

Etter å ha utført dette C ++ -kodebiten, mottok vi utdataene som ble vist i følgende bilde, som bekrefter at det usignerte heltallet i C ++ har størrelsen på 4 byte:

Hvordan erklære et usignert heltall i C++?

Usignerte heltall kan erklæres veldig enkelt i C++. Du kan se følgende kodebit erklære et usignert heltall i C ++ i Ubuntu 20.04:

I dette kodebiten har vi erklært et usignert heltall med uttalelsen “usignert int var” og tilordnet det verdien “255”. Deretter har vi brukt "cout" -uttalelsen for å vise verdien av dette usignerte heltallet på terminalen.

I hvilke scenarier skal vi unngå å bruke de usignerte heltallene i C++?

Det er visse situasjoner der bruken av de usignerte heltallene bør unngås strengt i C ++ fordi det ved å gjøre det kan føre til noen svært feilaktige utganger. Disse feilene kan ikke oppdages bare ved å se på C ++ -koden. Dessuten kan de heller ikke oppdages ved kompileringstidspunktet. I stedet vil du bare kunne fange disse feilene når du utfører C ++ -koden. La oss se på noen av disse scenariene, slik at du kan unngå å bruke de usignerte heltallene i C ++ i disse tilfellene.

Scenario nr. 1: Tilordne et negativt tall til en usignert heltallvariabel:

De usignerte heltallene brukes til å holde bare de ikke-negative hele tallene. Programmereren kan imidlertid fortsatt tilordne et negativt tall til en usignert heltallvariabel. Dette negative tallet er alltid pakket rundt til nærmeste antall innenfor området. Dette konseptet er kjent som Modulo -innpakning. Ingen feil genereres i dette tilfellet, men verdien du får er definitivt ikke den riktige. Du kan gjennomgå følgende kodebit for å forstå dette:

I dette kodebiten har vi tildelt verdien “-1” til en usignert heltallvariabel. For å sjekke om riktig verdi er skrevet ut på terminalen eller ikke, har vi brukt "cout" -uttalelsen med variabelen "var".

Etter å ha utført denne koden, fikk vi vite at verdien av den usignerte heltallvariabelen ble "4294967295" i stedet for "-1", som vist på bildet nedenfor:

Scenario nr. 2: Å utføre subtraksjon av to usignerte heltall der antallet som skal trekkes fra er større enn tallet som skal trekkes fra:

Hver gang vi utfører en subtraksjon av to heltall i en situasjon der det første tallet er mindre enn det andre, så får vi alltid en negativ utgang. Derfor, i denne situasjonen, bør vi aldri benytte oss av de usignerte heltallene. Følgende kodebit demonstrerer dette:

I dette kodebiten har vi to usignerte heltall, henholdsvis "var1" og "var2", hvis verdier er “2” og “7”. Vi ønsket å trekke fra “2” fra “7”. Resultatet av denne subtraksjonen er "-5". Du må imidlertid utføre dette kodebiten for å finne ut hvordan denne subtraksjonen fungerer med usignerte heltall.

Utførelsen av dette kodebiten ga resultatet vist i følgende bilde. Igjen, selv om vi ikke mottok noen feilmelding, viste utgangen vår fortsatt å være feil.

Scenario nr. 3: Bruke usignerte heltall med betingede utsagn:

Det er noen forhold som kjøres når en variabel er mindre enn en annen. Imidlertid, hvis vi sammenligner de negative og positive tallene mens vi bruker de usignerte heltallene, kan resultatet være uventet. For å utdype dette har vi designet følgende kodebit:

I dette kodebiten har vi to usignerte heltallvariabler, henholdsvis "var1" og "var2" hvis verdier er henholdsvis "-1" og "1". Deretter har vi en "if" uttalelse som vil bli utført hvis "var1

For å være vitne til dette, kan du se utdataene som vises i følgende bilde. Denne utgangen sier “var1” er ikke mindre enn “var2”, som er logisk og matematisk feil:

Scenario nr. 4: Ringfunksjoner med usignerte heltall:

Noen ganger definerer du slike funksjoner som aksepterer usignerte heltall som parametere. Igjen, hvis noen gir en negativ verdi til denne funksjonen, vil den fortsatt bli kalt, men vil gi gale resultater. For å skildre dette har vi implementert følgende kodebit:

I dette kodebiten har vi en funksjon som heter “DisplayNumber”, som godtar et usignert heltall “Num”. Innenfor denne funksjonen ønsker vi ganske enkelt å skrive ut verdien av dette nummeret på terminalen. I vår "Main ()" -funksjon har vi kalt denne funksjonen med tallet "-1".

Du kan se utdataene fra dette kodebiten i bildet vist nedenfor. I følge denne utgangen er verdien av tallet “4294967295” i stedet for “-1”:

Scenario nr. 5: Bruke de usignerte heltallene som løkke tellere:

I det siste scenariet vil vi bruke det usignerte heltallet som loop -telleren i C++. Du kan se dette fra følgende kodebit:

I dette kodebiten har vi definert en enkel "for" -sløyfe hvis iterator er et usignert heltall, og vi har redusert dette usignerte heltallet i hver iterasjon. Vi ble sittende fast i en uendelig sløyfe da vi utførte denne koden, som du kan se fra utdataene vist nedenfor. Dette skjedde utelukkende fordi i den siste iterasjonen da verdien av iteratoren ble dekrementert til “-1”, i stedet for å bryte sløyfen, ble denne iteratoren pakket rundt til nærmeste usignerte heltall hvis verdi var større enn “5”. Dette fortsatte å skje i hver iterasjon, og det er grunnen til at vi har denne typen utgang.

Konklusjon:

I denne artikkelen ønsket vi å snakke om de forskjellige aspektene ved å bruke de usignerte heltallene i C ++ i Ubuntu 20.04. Først delte vi størrelsen på de usignerte heltallene i C ++ med deg, etterfulgt av erklæringen deres. Etter det forklarte vi de forskjellige scenariene der bruken av de usignerte heltallene strengt tatt bør unngås ved å fremheve problemene de kan forårsake. Derfor, etter å ha gått gjennom denne artikkelen, vil du lett skille mellom situasjonene der de usignerte heltallene skal og ikke skal brukes. Vi håper du fant denne artikkelen nyttig, og vennligst sjekk ut Linux -hint for mer informative artikler.