2010-04-08 14 views
12

Sto tentando di inizializzare un tipo unsigned long long int. Ma il compilatore sta gettando un erroreCome inizializzare un tipo lungo lungo senza segno?

"error: integer constant is too large for "long" type ".

L'inizializzazione è la seguente:

unsigned long long temp = 1298307964911120440; 

Qualcuno può per favore fatemelo sapere qual è il problema e suggerire una soluzione per lo stesso.

risposta

11

Innanzitutto, assicurarsi che il compilatore supporti il ​​tipo lungo lungo. In secondo luogo, aggiungere un suffisso "ULL" al numero.

+1

solo per chiarire, 'unsigned long long' deve essere almeno di 64-bit. – GManNickG

+5

@GMan, non firmato da molto tempo non deve essere nulla fino a quando C++ 0x diventa ufficialmente ISO C++ 2011. Sarebbe molto più portatile usare uint64_t da , assumendo che sia l'intestazione sia il tipo esistano. –

+1

@ Michael: Pensavo fosse implicito che stavamo parlando del futuro, dal momento che Jerry dice "assicurati che il tuo compilatore supporti il ​​tipo lungo lungo". Ad ogni modo, sono d'accordo se volessimo forzare un numero ad essere esattamente 64-bit, sarebbe meglio, ma se vogliamo solo un numero elevato garantito-a-almeno-64-bit, 'unsigned long a lungo sarebbe meglio. – GManNickG

20

Prova suffisso il vostro valore letterale con ULL

5

D: Come inizializzare un tipo long long senza segno?

A: Con una lunga e lunga costante senza segno!

(Aggiungere il suffisso ULL alla costante.)

Problemi correlati