2009-01-20 16 views
35

declaro una variable para un contador de 64 bits como:Especificador de formato de 'long long'

long long call_count; 

¿Cuál es el especificador de formato que debo utilizar en los estados de impresión?

Lo intenté, %l, %ld, %ll. Ninguno parece ser correcto.

Uso el compilador Diab C para compilar el código de mi aplicación para ejecutar en el sistema operativo pSOS.

Respuesta

52

De acuerdo con C99, debe ser "% lld" (consulte, por ejemplo, here). Si Diab C no es C99, entonces tendrías que mirar los documentos del compilador, que no puedo encontrar en línea con un Google rápido.

+0

Esto también funciona para 'long long unsigned int'. – mayhewsw

+6

Para 'long long unsigned int' debes usar "% llu" –

14

Es "%lli" (o equivalentemente "%lld")

2

Quizás% LLD? Creo que este es el formato para gcc, no sé nada sobre el compilador Diab C.

+3

% lld es el especificador de conversión estándar durante mucho tiempo, Windows es el único que conozco que no es compatible con esto (pero no son compatibles con muchos estándares). Además, esto es específico de la biblioteca c estándar que se utiliza, no del compilador. –

9

Microsoft y Watcom usan %I64d (ojo de capital), otros usan %lld (ell ell elíptico minúsculo).

+0

"use% I64d (mayúscula I)": intente de nuevo? –

+5

Microsoft usa ll (ell ell) por mucho tiempo; I64 (ojo) para __int64. http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx –

+0

Aclarado. Gracias –

1

Es% LLD de llu firmado y% para firmar

0
long long t1;    //signed 
unsigned long long t2; //unsigned 

printf("%lld",t1); 
printf("%llu",t2);