En C en un sistema de 32 bits, ¿qué tipo de datos almacenará (y por lo tanto puede imprimir) el número entero más grande? ¿Es long long
o unsigned long
? ¿Hay un unsigned long long
? ¿Y cuál es el más preciso y políticamente correcto?¿Cuál es el tipo de datos más grande para almacenar (e imprimir) un número entero?
Respuesta
Su pregunta es poco clara, pero intmax_t
es el tipo de valor entero con signo más grande (y uintmax_t
es el tipo de entero sin signo más grande). Estos son typedefs definidos en <stdint.h>
, pero si los está imprimiendo, necesita <inttypes.h>
en su lugar, y las macros PRInMAX para varios valores de n.
Y 'uintmax_t' (si la implementación los admite, se agregaron en C99). –
¿No funciona '% jd' y'% ju' (y se ve mejor) para imprimir 'intmax_t' y' uintmax_t' respectivamente? Fuente: - [el último borrador c11 libremente disponible] (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf), consulte la sección 7.21.6.1 sobre 'fprintf' –
En ISO C99 long long
tiene al menos 64 bits, que es el tipo de datos entero estándar más grande. También viene como unsigned long long
. Aparentemente su compilador podría proporcionar tipos más grandes que se definen por intmax_t
y uintmax_t
.
Sin embargo, en base a sus comentarios es posible que esté buscando una biblioteca bigint como GMP. Permite enteros largos arbitrarios (y punto flotante) de longitud limitada solo por los recursos de su sistema.
Sí (tenga en cuenta que 'long long' y' unsigned long long' son tipos distintos), pero las implementaciones pueden tener * tipos enteros extendidos * que son más anchos que 'long long'. Los typedefs 'intmax_t' y' uintmax_t', definidos en '
@KeithThompson Gracias lo incorporé. – ChrisWue
El tipo de datos con la cadena impresa más larga es un tipo de datos con signo, a menos que tenga un tipo entero que tenga un valor máximo sin signo que sea un dígito más largo que el valor máximo firmado.
Por ejemplo, un entero de 4 bits sin signo sería a lo sumo dos caracteres sin signo o un carácter más el signo negativo cuando se firme.
Por lo tanto, debe elegir un tipo de datos firmado para representar la cadena impresa más grande. Que debería ser long long
.
el Las cadenas impresas más largas para 'int64_t' y' uint64_t' son '-9223372036854775808' y' 18446744073709551615', respectivamente, que tienen la misma longitud –
Sin andarse por las ramas Me gustaría decir que a veces no en la práctica de codificación actual bt sí definitivamente en algunas competiciones uno podría necesitar tipos de datos muy grandes bt Creo que podemos hacer esto. Por qué no tomar la secuencia completa en forma de cadena y luego utilizar la función atoi para obtener el valor entero es correcta Creo politcally :: :)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
char bigString [256];
printf ("Enter a number: ");
fgets (bigString, 256, stdin);
i = atoi (bigString);
printf ("The value entered is %d.",i);
return 0;
}
. Aún necesita almacenar el valor convertido en un entero que todavía causa el desbordamiento. – Sinstein
- 1. Cómo almacenar un número entero grande (10 dígitos)?
- 2. ¿BIGINT (8) es el número entero más grande que mysql puede almacenar?
- 3. Fortran: el número entero más grande y el más pequeño
- 4. MySQL: ¿tipo de datos más eficiente para almacenar notas largas?
- 5. ¿Cuál es el tipo de datos ideal para almacenar la dirección IP en una tabla mysql?
- 6. ¿PHP tiene un tipo de datos más grande que int?
- 7. Cuál es el tipo de datos primitivo numérico más grande en C++ (antiguo/nuevo estándar)
- 8. ¿Cuál es el número de puerto de red TCP/IP más grande permitido para IPv4?
- 9. ¿Cuál es la forma más rápida de calcular el número de bits necesarios para almacenar un número
- 10. ¿Qué tipo de datos usar para un número muy grande en C++?
- 11. ¿Cuál es la consulta SQL más simple para encontrar el segundo valor más grande?
- 12. ¿Es posible almacenar un número de 1 byte en Postgres?
- 13. ¿Cuál es el tipo de datos más apropiado para almacenar una dirección IP en el servidor SQL?
- 14. C++ 11 forma de escribir la plantilla para elegir un tipo entero más grande?
- 15. ¿Qué tipo de base de datos NoSQL es más adecuada para almacenar datos jerárquicos?
- 16. "Número entero demasiado grande" mensaje de error para 600851475143
- 17. ¿Tiene algún inconveniente para almacenar un número entero como una cadena en una base de datos?
- 18. ¿Cuál es el tipo de datos mejor y más preciso para almacenar la longitud de latitud en iphone xcode?
- 19. ¿Cuál es la forma más rápida de calcular la potencia grande de 2 módulo un número
- 20. ¿Qué es intptr_t, es un tipo para entero o puntero?
- 21. ¿Cuál es el mejor tipo de datos SQL para almacenar cadenas JSON?
- 22. ¿Cuál es el tipo de referencia entero en C#?
- 23. ¿Cuál es la forma más fácil de agregar comas a un número entero?
- 24. SQL espacial: ¿tipo de datos más adecuado para un cuadrado?
- 25. ¿Cuál es el tipo de datos "átomo"?
- 26. ¿Qué elegir para almacenar solo un número entero? Sqlite? o archivo de texto?
- 27. Algoritmo para encontrar el número primo más grande más pequeño que x
- 28. ¿Cuál es el tipo de datos de puntero en c?
- 29. C: ¿Cuál es el tipo de datos correcto para usar para tamaños de archivo en bytes?
- 30. MySQL: tipo de datos más pequeño para un bit
Si no eres más que preocupados por la posibilidad de mostrar grandes números, yo votaría por char *. :) –
Puede estar haciendo la pregunta incorrecta. * ¿Qué tan alto necesita ir? * – Jon
Sí, C99 admite un tipo primitivo 'sin signo largo ', pero C90 no. Y dado que muchos de los compiladores de C que existen en libertad todavía son C90, la respuesta podría ser no. ¿En cuál estás usando/interesado? –