Tipos integrales extendidos (Elección del tamaño entero correcto en C/C++)

C/C++ tiene definiciones muy flexibles en sus tipos de datos enteros básicos (char, short, int, long y long long). El lenguaje garantiza que pueden representar al menos algún rango de valores, pero cualquier plataforma en particular (compilador, sistema operativo, hardware) puede ser más grande que eso.
Un buen ejemplo es largo. En una máquina, podría ser de 32 bits (el mínimo requerido por C). En otro, es de 64 bits. ¿Qué haces si quieres un tipo entero que tenga exactamente 32 bits de largo? Ahí es donde entra en juego int32_t: es un alias para cualquier tipo de entero que tenga su sistema en particular que sea exactamente de 32 bits.
Modelo: 
 

intN_t or uintN_t
Where N is width of integer which can be 8, 16, 32, 64
or any other type width supported by the library.

CPP

// C++ program to show use of extended integral types
#include <iostream>
using namespace std;
 
int main()
{
    uint8_t i;      // i with width of exact 8 bits
 
    // Minimum value represented by unsigned 8 bit is 0
    i = 0;
    cout << "Minimum value of  i\t: "<< (int)i << endl;
 
    // Maximum value represented by unsigned 8 bit is 255
    i = 255;
    cout << "Maximum value of i\t: "<< (int)i << endl;
 
    // Warning: large integer implicitly truncated to
    // unsigned type. It will print any garbage value
    i = 2436;
    cout << "Beyond range value of i\t: " << (int)i << endl;
 
    return 0;
}

Producción: 
 

 In function 'int main()':
19:7: warning: large integer implicitly truncated to unsigned type [-overflow]
     i = 2436;
       ^

Minimum value of  i    : 0
Maximum value of i    : 255
Beyond range value of i    : 132

Diferentes variaciones 
1. Entero de 8 bits sin signo de ancho fijo: uint8_t 
Significa darme un int sin signo de exactamente 8 bits.
2. Entero de 8 bits sin signo de ancho mínimo: uint_least8_t 
Significa darme el tipo más pequeño de int sin signo que tenga al menos 8 bits. Optimizado para el consumo de memoria.
3. Entero de 8 bits sin signo de ancho mínimo más rápido: uint_fast8_t 
Significa darme un int sin signo de al menos 8 bits que hará que mi programa sea más rápido. Puede elegir un tipo de datos más grande debido a consideraciones de alineación. Optimizado para la velocidad.
Por lo tanto, se garantiza que un uint8_t tiene exactamente 8 bits de ancho. A uint_least8_t es el entero más pequeño que se garantiza que tiene al menos 8 bits de ancho. Un uint_fast8_t es el entero más rápido garantizado para tener al menos 8 bits de ancho. 
Entonces, los tipos integrales extendidos nos ayudan a escribir código portátil y eficiente .
Este artículo es una contribución de Rohit Kasle . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *