C11 progetto spiega il modificatore di lunghezza per ptrdiff_t
in 7.21.6.1 7 "La funzione fprintf
"
t
Specifica che una d
, i
, o
, u
, vale x
o X
conversione specificatore seguente a ptrdiff_t
o il corrispondente argomento di tipo intero senza segno; o che un identificatore di conversione n
seguente si applica a un puntatore a un argomento ptrdiff_t
.
Usa "%td"
come nell'esempio seguente: Credit: @trojanfoe
ptrdiff_t diff = b - a;
printf("diff = %td", diff);
Se il compilatore non non supporta "%td"
, gettato in un tipo firmato - il più a lungo, meglio è. Quindi assicurati il formato alternativo e la corrispondenza degli argomenti.
// Note the cast
printf("diff = %lld", (long long) diff); // or
printf("diff = %ld", (long) diff);
Rif format specifiers
Tale domanda non appare completo; il carattere 't' è un modificatore di lunghezza dello specificatore di tipo' d'. Ti suggerisco inoltre di specificare Visual Studio nella tua domanda se questa è la piattaforma che ti interessa. – trojanfoe
'% td' è standard. Il compilatore C di Visual Studio non è conforme allo standard C corrente. –
@AmirSaniyan: Il 't' è un identificatore di dimensione, non un tipo (il tipo è' d' qui). [Apparentemente] (http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx) 'I' dovrebbe essere usato come identificatore di dimensione per' ptrdiff_t' con l'implementazione Microsoft (quindi '% Id'), che non è standard. – caf