En el lenguaje de programación C, la palabra clave ‘int’ se usa en una declaración de tipo para dar a una variable un tipo entero. Sin embargo, el hecho de que el tipo represente números enteros no significa que pueda representar todos los números enteros. El tamaño de una variable int es fijo y está determinado por la implementación de C que utilice. El estándar C dicta que un int debe tener un rango de al menos -32768 a +32767. La implementación de C puede, y muy a menudo lo hace, tener un rango mucho mayor que este. El rango del tipo int en una implementación de C en particular se puede obtener a través de las variables INT_MAX e INT_MIN definidas en el encabezado <limits.h> :
C
#include <limits.h> #include <stdio.h> int main() { printf("minimum int value = %d\n" "maximum int value = %d\n" "size of int in bytes = %zu\n" "size of int in bits = %zu", INT_MIN, INT_MAX, sizeof(int), sizeof(int) * CHAR_BIT); }
minimum int value = -2147483648 maximum int value = 2147483647 size of int in bytes = 4 size of int in bits = 32
Sin embargo, tenga en cuenta que no todas las implementaciones de C son iguales y que no todas tienen los mismos rangos para los tipos enteros.
ENTERO CON SIGNO
El tipo int en C es un entero con signo, lo que significa que puede representar tanto números negativos como positivos. Esto contrasta con un entero sin signo (que se puede usar declarando una variable int sin signo ), que solo puede representar números positivos.
Intentar asignar un tipo de entero con signo con un valor que está fuera de su rango de valores representables (de INT_MIN a INT_MAX) dará como resultado un comportamiento indefinido.
Los enteros con signo suelen utilizar el complemento a dos en todas las máquinas modernas y, en el próximo estándar C23 (a partir de enero de 2022), el complemento a dos es la única forma válida de representar enteros con signo. Puede leer más sobre cómo se representan los números con signo en binario y por qué el complemento a dos es la representación más común en este artículo .
ENTERO SIN FIRMA
En el caso de un número entero sin signo, solo se pueden almacenar números positivos. En este tipo de datos, todos los bits del entero se utilizan para almacenar un valor positivo, en lugar de tener algunos reservados para información de signos. Esto significa que la magnitud del valor máximo representable en un entero sin signo es mayor que la de un entero con signo con el mismo número de bits.
En el caso de un valor int sin signo , el valor máximo lo especifica la macro UINT_MAX, definida en <limits.h> , y el valor mínimo es 0. Según el estándar C, la aritmética sin signo nunca puede desbordarse, sino que se realiza módulo el valor máximo del tipo sin signo + 1, por lo que para int sin signo , la aritmética se realiza módulo UINT_MAX + 1 tal que UINT_MAX + 1 es 0, y UINT_MAX + 2 es 1, y así sucesivamente:
C
#include <limits.h> #include <stdio.h> int main() { printf("UINT_MAX + 1 = %u", UINT_MAX + 1); }
UINT_MAX + 1 = 0
Publicación traducida automáticamente
Artículo escrito por MohitPandey1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA