Enteros sin firmar C ++

Enteros sin firmar C ++
El tipo de datos enteros en C ++ se divide aún más en muchos subtipos. Uno de esos subtipos son los enteros sin firmar. Los enteros sin firmar son capaces de almacenar solo los números enteros positivos. Se prefieren los enteros sin firmar en C ++ al manipular bits en los sistemas operativos, ya que tiene espacio de almacenamiento limitado. Además, también se pueden usar para la indexación de matriz ya que el índice de una matriz nunca puede ser negativo. Este artículo está dedicado a la discusión de los enteros sin firmar en C ++ en Ubuntu 20.04.

El tamaño de los enteros sin firmar en C ++:

El tamaño de un entero sin signo típico en C ++ es de 4 bytes. Para confirmar esto, puede echar un vistazo al siguiente fragmento de código:

En este fragmento de código, acabamos de utilizar la instrucción "Cout" con la función "sizeOf". El parámetro que implementamos en esta función es "INT sin firmar". Significa que esta declaración devolverá el tamaño de un entero sin firmar en bytes.

Después de ejecutar este fragmento de código C ++, recibimos la salida que se muestra en la siguiente imagen, lo que confirma que el número entero sin firmar en C ++ tiene el tamaño de 4 bytes:

Cómo declarar un entero sin firmar en c++?

Los enteros sin firmar se pueden declarar muy fácilmente en c++. Puede ver el siguiente fragmento de código declarar un entero sin firmar en C ++ en Ubuntu 20.04:

En este fragmento de código, hemos declarado un entero sin firmar con la declaración "Unsigned int var" y le asignó el valor "255". Luego, hemos utilizado la instrucción "Cout" para mostrar el valor de este entero sin firmar en el terminal.

¿En qué escenarios debemos evitar usar los enteros sin firmar en c++?

Hay ciertas situaciones en las que el uso de los enteros sin firmar debe evitarse estrictamente en C ++ porque al hacerlo, puede conducir a algunas salidas altamente erróneas. Estos errores no se pueden detectar simplemente mirando el código C ++. Además, tampoco se pueden detectar en el tiempo de compilación. En cambio, solo podrá detectar esos errores una vez que ejecute su código C ++. Echemos un vistazo a algunos de estos escenarios para que pueda evitar usar los enteros sin firmar en C ++ en estos casos.

Escenario # 1: Asignar un número negativo a una variable entera sin firmar:

Los enteros sin firmar se utilizan para contener solo los números enteros no negativos. Sin embargo, el programador aún puede asignar un número negativo a una variable entera sin firmar. Este número negativo siempre está envuelto al número más cercano dentro del rango. Este concepto se conoce como envoltorio de módulo. No se genera ningún error en este caso, pero el valor que obtiene definitivamente no es el correcto. Puede revisar el siguiente fragmento de código para comprender esto:

En este fragmento de código, hemos asignado el valor "-1" a una variable entero sin firmar. Luego, para verificar si el valor correcto se imprime en el terminal o no, hemos utilizado la instrucción "Cout" con la variable "VAR".

Al ejecutar este código, llegamos a saber que el valor de la variable entera sin firmar se convirtió en "4294967295" en lugar de "-1", como se muestra en la imagen a continuación:

Escenario # 2: Realización de dos enteros sin firmar en los que el número que se restará es mayor que el número que se restará:

Cada vez que realizamos una resta de dos enteros en una situación en la que el primer número es más pequeño que el segundo, siempre recibimos una salida negativa. Por lo tanto, en esta situación, nunca debemos hacer uso de los enteros sin firmar. El siguiente fragmento de código demuestra esto:

En este fragmento de código, tenemos dos enteros sin firmar, "Var1" y "Var2", cuyos valores son "2" y "7", respectivamente. Queríamos restar "2" de "7". El resultado de esta resta es "-5". Sin embargo, tendrá que ejecutar este fragmento de código para descubrir cómo funciona esta resta con integers sin firmar.

La ejecución de este fragmento de código produjo el resultado que se muestra en la siguiente imagen. Nuevamente, aunque no recibimos ningún mensaje de error, nuestra salida aún resultó ser incorrecta.

Escenario # 3: Uso de los enteros sin firmar con declaraciones condicionales:

Hay algunas condiciones que se ejecutan cuando una variable es menor que otra. Sin embargo, si comparamos los números negativos y positivos mientras usamos los enteros sin firmar, entonces el resultado podría ser inesperado. Para elaborar esto, hemos diseñado el siguiente fragmento de código:

En este fragmento de código, tenemos dos variables enteras sin firmar, "Var1" y "Var2" cuyos valores son "-1" y "1" respectivamente. Entonces, tenemos una declaración "si" que se ejecutará si "Var1

Para presenciar esto, puede ver la salida que se muestra en la siguiente imagen. Esta salida establece que "VAR1" no es menor que "VAR2", que es incorrecta lógica y matemáticamente:

Escenario # 4: Funciones de llamadas con enteros sin firmar:

A veces, define tales funciones que aceptan enteros sin firmar como parámetros. Nuevamente, si alguien pasa un valor negativo a esta función, aún se llamará pero producirá resultados incorrectos. Para representar esto, hemos implementado el siguiente fragmento de código:

En este fragmento de código, tenemos una función llamada "DisplayNumber", que acepta un número entero sin firmar "NUM". Dentro de esta función, simplemente queremos imprimir el valor de este número en el terminal. En nuestra función "main ()", hemos llamado a esta función con el número "-1".

Puede ver la salida de este fragmento de código en la imagen que se muestra a continuación. Según esta salida, el valor del número es "4294967295" en lugar de "-1":

Escenario # 5: Uso de los enteros sin firmar como contadores de bucle:

En el último escenario, usaremos el entero sin firmar como el mostrador de bucle en C++. Puede ver esto desde el siguiente fragmento de código:

En este fragmento de código, hemos definido un bucle simple "para" cuyo iterador es un entero sin firmar, y hemos disminuido este entero sin firmar en cada iteración. Nos quedamos atascados en un bucle infinito cuando ejecutamos este código, como puede ver desde la salida que se muestra a continuación. Esto sucedió únicamente porque en la última iteración cuando el valor del iterador se disminuyó a "-1", en lugar de romper el bucle, este iterador fue envuelto al entero sin firmar más cercano cuyo valor era mayor que "5". Esto siguió sucediendo en cada iteración, por lo que tenemos este tipo de salida.

Conclusión:

En este artículo, queríamos hablar sobre los diversos aspectos del uso de los enteros sin firmar en C ++ en Ubuntu 20.04. Primero, compartimos el tamaño de los enteros sin firmar en C ++ con usted, seguido de su declaración. Después de eso, explicamos los diferentes escenarios en los que el uso de los enteros no firmados debe evitarse estrictamente destacando los problemas que pueden causar. Por lo tanto, después de pasar por este artículo, diferenciará fácilmente entre las situaciones en las que los enteros no firmados deben y no deben usarse. Esperamos que haya encontrado este artículo útil, y consulte Linux Sugerencia para obtener más artículos informativos.