Inteiros não assinados C ++

Inteiros não assinados C ++
O tipo de dados inteiro em C ++ é dividido em muitos subtipos. Um desses subtipos é o inteiro não assinado. Os números inteiros não assinados são capazes de armazenar apenas os números inteiros positivos. Os números inteiros não assinados em C ++ são preferidos enquanto manipula bits em sistemas operacionais, pois você tem espaço de armazenamento limitado. Além disso, eles também podem ser usados ​​para indexação de matriz, pois o índice de uma matriz nunca pode ser negativo. Este artigo é dedicado à discussão dos números inteiros não assinados em C ++ no Ubuntu 20.04.

O tamanho de números inteiros não assinados em C ++:

O tamanho de um número inteiro não assinado típico em C ++ é 4 bytes. Para confirmar isso, você pode dar uma olhada no seguinte snippet de código:

Neste snippet de código, acabamos de usar a declaração "cout" com a função "sizeof". O parâmetro que implementamos para esta função é "não assinado int". Isso significa que esta afirmação retornará o tamanho de um número inteiro não assinado em bytes.

Depois de executar este trecho de código C ++, recebemos a saída mostrada na imagem a seguir, que confirma que o número inteiro não assinado em C ++ tem o tamanho de 4 bytes:

Como declarar um número inteiro não assinado em c++?

Números inteiros não assinados podem ser declarados com muita facilidade em C++. Você pode ver o seguinte snippet de código declarar um número inteiro não assinado em C ++ no Ubuntu 20.04:

Neste trenó de código, declaramos um número inteiro não assinado com a declaração “não assinada int var” e atribuímos a ele o valor “255”. Em seguida, usamos a declaração "cout" para exibir o valor desse número inteiro não assinado no terminal.

Em que cenários devemos evitar usar os números inteiros não assinados em C++?

Existem certas situações em que o uso dos números inteiros não assinados deve ser estritamente evitado em C ++ porque, ao fazê -lo, pode levar a algumas saídas altamente errôneas. Esses erros não podem ser detectados simplesmente olhando o código C ++. Além disso, eles também não podem ser detectados no tempo de compilação. Em vez disso, você só poderá capturar esses erros depois de executar seu código C ++. Vamos dar uma olhada em alguns desses cenários para que você possa evitar o uso dos números inteiros não assinados em C ++ nesses casos.

Cenário # 1: atribuindo um número negativo a uma variável inteira não assinada:

Os números inteiros não assinados são usados ​​para manter apenas os números inteiros não negativos. No entanto, o programador ainda pode atribuir um número negativo a uma variável inteira não assinada. Esse número negativo é sempre enrolado no número mais próximo do intervalo. Este conceito é conhecido como embrulho módulo. Nenhum erro é gerado neste caso, mas o valor que você obtém definitivamente não é o correto. Você pode revisar o seguinte snippet de código para entender o seguinte:

Neste snippet de código, atribuímos o valor "-1" a uma variável inteira não assinada. Então, para verificar se o valor correto é impresso no terminal ou não, usamos a declaração "cout" com a variável "var".

Ao executar esse código, sabemos que o valor da variável inteira não assinada se tornou "4294967295" em vez de "-1", como mostrado na imagem abaixo:

Cenário # 2: Realizar a subtração de dois números inteiros não assinados, nos quais o número a ser subtraído é maior que o número a ser subtraído de:

Sempre que realizamos uma subtração de dois números inteiros em uma situação em que o primeiro número é menor que o segundo, sempre recebemos uma saída negativa. Portanto, nessa situação, nunca devemos usar os números inteiros não assinados. O snippet de código a seguir demonstra o seguinte:

Neste trecho de código, temos dois números inteiros não assinados, "VAR1" e "VAR2", cujos valores são "2" e "7", respectivamente. Queríamos subtrair "2" de "7". O resultado desta subtração é "-5". No entanto, você terá que executar este snippet de código para descobrir como essa subtração funciona com números inteiros não assinados.

A execução deste snippet de código produziu o resultado mostrado na imagem a seguir. Novamente, embora não tenhamos recebido nenhuma mensagem de erro, nossa saída ainda acabou sendo incorreta.

Cenário # 3: Usando os números inteiros não assinados com declarações condicionais:

Existem algumas condições que são executadas quando uma variável é menor que outra. No entanto, se compararmos os números negativos e positivos ao usar os números inteiros não assinados, o resultado poderá ser inesperado. Para elaborar isso, projetamos o seguinte snippet de código:

Neste trecho de código, temos duas variáveis ​​inteiras não assinadas, "VAR1" e "VAR2" cujos valores são "-1" e "1", respectivamente. Então, temos uma declaração "se" que será executada se "var1

Para testemunhar isso, você pode ver a saída mostrada na imagem a seguir. Esta saída afirma que "var1" não é menor que "var2", que é lógica e matematicamente incorreta:

Cenário # 4: Chamando funções com números inteiros não assinados:

Às vezes, você define essas funções que aceitam números inteiros não assinados como parâmetros. Novamente, se alguém passar um valor negativo para essa função, ela ainda será chamada, mas produzirá resultados errados. Para descrever isso, implementamos o seguinte snippet de código:

Neste trecho de código, temos uma função chamada "DisplayNumber", que aceita um número inteiro não assinado "num". Dentro desta função, simplesmente queremos imprimir o valor desse número no terminal. Na nossa função "main ()", chamamos essa função com o número "-1".

Você pode ver a saída deste trecho de código na imagem mostrada abaixo. De acordo com esta saída, o valor do número é "4294967295" em vez de "-1":

Cenário # 5: Usando os números inteiros não assinados como contadores de loop:

No último cenário, usaremos o número inteiro não assinado como o contador de loop em c++. Você pode ver isso no seguinte snippet de código:

Neste trecho de código, definimos um loop simples de "para" cujo iterador é um número inteiro não assinado e diminuímos esse número inteiro não assinado em todas as iterações. Ficamos presos em um loop infinito quando executamos este código, como você pode ver na saída mostrada abaixo. Isso aconteceu apenas porque na última iteração quando o valor do iterador diminuiu para "-1", em vez de quebrar o loop, esse iterador foi envolvido com o número inteiro não assinado mais próximo cujo valor era maior que "5". Isso continuou acontecendo em todas as iterações, e é por isso que temos esse tipo de saída.

Conclusão:

Neste artigo, queríamos falar sobre os vários aspectos do uso dos números inteiros não assinados em C ++ no Ubuntu 20.04. Primeiro, compartilhamos o tamanho dos números inteiros não assinados em C ++ com você, seguidos pela declaração deles. Depois disso, explicamos os diferentes cenários em que o uso dos números inteiros não assinados deve ser estritamente evitado, destacando os problemas que eles podem causar. Portanto, depois de passar por este artigo, você diferenciará facilmente as situações em que os números inteiros não assinados devem e não devem ser usados. Esperamos.