2013-05-13 8 views
8

Voglio usare una variabile u_int64_t come chiave di ricerca,U_int64_t è disponibile su computer a 32 bit?

è u_int64_t accessibile macchina a 32 bit?

in caso contrario, devo dividere questa variabile in due varibles? quindi come chiave di ricerca, è un po 'più fastidioso

ci sono soluzioni per questo?

+6

@ unwind Your [edit] (http://stackoverflow.com/posts/16521066/revisions) è molto invadente. L'OP è probabilmente confuso circa la corretta denominazione del tipo. Questa confusione dovrebbe essere risolta nelle risposte o nei commenti, non modificando silenziosamente la domanda! Inoltre, hai eliminato un intero paragrafo senza una buona ragione. Si prega di annullare la modifica. – user4815162342

+3

@ user4815162342 Ok, grazie per averlo indicato. Immagino di non essere a conoscenza dell'esistenza di un vero tipo scritto in quel modo, quindi ho pensato che fosse un refuso. Anche grazie a Grijesh (credo) per aver effettivamente ripristinato la modifica. – unwind

risposta

9

Un tipo integrale a 64 bit senza segno non è garantito dallo standard C, ma è generalmente disponibile su macchine a 32 bit e praticamente su tutte le macchine che eseguono Linux. Quando presente, il tipo sarà denominato uint64_t (si noti un trattino in meno) e dichiarato nel file di intestazione <stdint.h>.

+0

È garantito che un numero intero senza segno di almeno 64 bit sia disponibile con i nomi 'uintleast64_t' (typedef in' ') e' unsigned long long'. – rubenvb

+0

@rubenvb: si noti che 'long long' è * permesso * per essere * più grande * di 64 bit. – DevSolar

+3

Il commento di @DevSolar rubenvb dice "** almeno ** 64 bit di larghezza". L'OP, d'altro canto, molto probabilmente vuole solo un tipo a 64 bit e non si preoccupa delle rare architetture che potrebbero supportare un tipo più ampio senza supportare esattamente uno a 64 bit. – user4815162342

5

Sì. Il tipo di dato intero a 64 bit è supportato su una macchina a 32 bit.

In C89 Standard, il tipo long long (≥ 64, ≥ size of long) è supportato come GNU extension. Nello standard C99, vi è native support per un numero intero lungo (≥ 64, ≥ dimensione del lungo).

+0

Si noti che 'long long' è * permesso * per essere * più grande * di 64 bit. – DevSolar

+0

Sì, hai ragione per lungo tempo può essere più di 64 bit di larghezza (anche se raro), ma grazie per la correzione :) –

Problemi correlati