2011-10-31 4 views

risposta

21

È %td. Vedi here.

+1

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

+5

'% td' è standard. Il compilatore C di Visual Studio non è conforme allo standard C corrente. –

+3

@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

5

Utilizzare %td e se il compilatore non lo supporta, provare %ld (inserire l'input per long).

11

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