2010-04-08 24 views
12

Estoy intentando inicializar un tipo unsigned long long int. Sin embargo, el compilador está lanzando un error¿Cómo inicializar un tipo largo sin signo?

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

La inicialización se muestra a continuación:

unsigned long long temp = 1298307964911120440; 

Puede alguien por favor hágamelo saber cuál es el problema y sugerir una solución para el mismo.

Respuesta

11

Primero, asegúrese de que su compilador sea compatible con el tipo largo y largo. Segundo, agregue un sufijo "ULL" al número.

+1

sólo para aclarar, 'long' largo sin signo tiene que ser al menos 64 bits. – GManNickG

+5

@GMan, unsigned long long no tiene que ser nada hasta que C++ 0x se convierta oficialmente en ISO C++ 2011. Sería mucho más portátil usar uint64_t desde , suponiendo que existan el encabezado y el tipo. –

+1

@Michael: Pensé que estaba implícito que estábamos hablando del futuro, ya que Jerry dice "asegúrese de que su compilador sea compatible con el tipo largo y largo". De todos modos, estoy de acuerdo si quisiéramos forzar un número que sea exactamente de 64 bits, eso sería mejor, pero si solo queremos un número grande garantizado que sea al menos de 64 bits, 'sin signo largo mucho' sería mejor. – GManNickG

20

Trate sufijando su valor literal con ULL

5

Q: ¿Cómo inicializar un tipo long long?

A: ¡Con una constante larga sin signo!

(Añadir sufijo ULL a la constante.)

Cuestiones relacionadas