In C su un sistema a 32 bit, quale tipo di dati memorizzerà (e può quindi stampare) il numero intero più grande? È long long
o unsigned long
? C'è un unsigned long long
? E qual è il più preciso e politicamente corretto?Qual è il tipo di dati più grande per la memorizzazione (e la stampa) di un intero?
risposta
La tua domanda è un po 'poco chiara, ma intmax_t
è il più grande tipo con valore intero con segno (e uintmax_t
è il più grande tipo di intero senza segno). Questi sono typedef definiti in <stdint.h>
, ma se si stanno stampando, è necessario invece <inttypes.h>
e le macro PRInMAX per vari valori di n.
E 'uintmax_t' (se l'implementazione li supporta, sono stati aggiunti in C99). –
dont '% jd' e'% ju' funzionano (e hanno un aspetto migliore) per stampare 'intmax_t' e' uintmax_t' rispettosamente? Fonte: - [l'ultima bozza C11 liberamente disponibile] (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf), vedere la sezione 7.21.6.1 su 'fprintf' –
In ISO C99 long long
è almeno a 64 bit, che è il più grande standard di tipo di dati intero. Viene anche come unsigned long long
. Apparentemente il tuo compilatore potrebbe fornire tipi più grandi che sono stati definiti da intmax_t
e uintmax_t
.
Tuttavia, in base ai commenti, è possibile che si stia cercando una libreria bigint come GMP. Permette di arbitrari interi lunghi (e in virgola mobile) di lunghezza limitata solo dalle risorse di sistema.
Sì (si noti che 'long long' e' unsigned long long 'sono tipi distinti), ma le implementazioni possono avere * tipi interi estesi * più larghi di 'long long'. I typedefs 'intmax_t' e' uintmax_t', definiti in '
@KeithThompson Grazie, l'ho incorporato. – ChrisWue
Il tipo di dati con la stringa stampata più lunga è un tipo di dati firmato, a meno che non si disponga di un tipo intero con un valore non firmato massimo di una cifra superiore al valore massimo firmato.
Ad esempio, un numero intero a 4 bit senza segno sarebbe composto al massimo da due caratteri senza segno o da un carattere più il segno negativo al momento della firma.
Pertanto, è necessario selezionare un tipo di dati firmato per rappresentare la stringa stampata più grande. Quale dovrebbe essere long long
.
il la stringa stampata più lunga per 'int64_t' e' uint64_t' sono '-9223372036854775808' e' 18446744073709551615' rispettivamente, che hanno la stessa lunghezza –
Senza giri di parole vorrei dire che a volte non in pratica di codifica effettiva in determinate competizioni potremmo aver bisogno di tipi di dati molto grandi. Penso che possiamo farlo. Perché non prendere l'intera sequenza, sotto forma di stringa e quindi utilizzare la funzione atoi per ottenere il valore intero è penso politcally corretta :: :)
#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;
}
Hai ancora bisogno di memorizzare il valore convertito in un numero intero che causa ancora un overflow. – Sinstein
- 1. più grande tipo di dati in C++?
- 2. Qual è il tipo di dati migliore e più preciso per la memorizzazione della longitudine di latitudine in iphone xcode?
- 3. Qual è il miglior tipo di dati SQL per la memorizzazione della stringa JSON?
- 4. Quale tipo di dati è il migliore per la memorizzazione di articoli nel database SQL?
- 5. Fortran: il più grande e il più piccolo intero
- 6. PHP ha un tipo di dati più grande di int?
- 7. VB.NET miglior tipo di dati per la memorizzazione dei valori di valuta
- 8. Qual è il metodo più efficiente per la memorizzazione di un numero elevato di stringhe in una mappa?
- 9. Qual è il tipo di dati "atom"?
- 10. Qual è il più grande problema di prestazioni in Emberjs?
- 11. Qual è la differenza tra un tipo di dati astratto (ADT) e una struttura dati?
- 12. Qual è la differenza tra un tipo di delegato e un tipo di gestore di eventi?
- 13. Qual è il tipo di riferimento intero in C#?
- 14. Qual è la complessità peggiore per il tipo di benna?
- 15. Nel gioco 2048, qual è la più grande tessera teorica?
- 16. Qual è un buon modello per la memorizzazione delle implementazioni di un'interfaccia e il recupero di implementazioni specifiche?
- 17. Struttura dati per la memorizzazione di migliaia di vettori
- 18. tipo di bit di stampa come intero? Come è la conversione?
- 19. Dividere un numero intero e trovare la somma più grande C++
- 20. Qual è la differenza tra la memorizzazione di un Vec vs un Slice?
- 21. Qual è la differenza tra tipo e tipo di dati in Haskell?
- 22. Qual è il tipo di dati dell'utente facebook
- 23. Best practice per la memorizzazione di flussi di dati costanti
- 24. Struttura dati per la memorizzazione delle associazioni di parole
- 25. Qual è il numero più grande che la classe decimale può gestire?
- 26. Qual è la migliore strategia per la creazione, la visualizzazione e la stampa di documenti PDF in Android
- 27. Qual è il tipo di dati per unix_timestamp (MySQL)?
- 28. Struttura dati per la memorizzazione di un campo di ordinamento per consentire modifiche efficienti
- 29. qual è il tipo di dati corretto per la chiave univoca nel DB postgresql?
- 30. Qual è la precedenza di ~ e perché?
Se sei solo interessati con la possibilità di visualizzare grandi numeri, voterei per char *. :) –
Potresti aver fatto la domanda sbagliata. * Quanto in alto hai bisogno di andare? * – Jon
Sì, C99 supporta un tipo primitivo 'unsigned long long', ma C90 no. E dal momento che molti compilatori C in circolazione sono ancora C90, la risposta potrebbe essere no. Quale stai usando/interessato? –