Os prefixos de tamanho são necessários nos programas em ANSI-C que usam printf(3C) a fim de indicar o tamanho e o tipo do argumento de conversão. O compilador de D realiza esse processamento para as suas chamadas printf () automaticamente, sendo assim, os prefixos de tamanho não são necessários. Embora os prefixos de tamanho sejam fornecidos para compatibilidade com C, seu uso é explicitamente desencorajado nos programas em D porque eles vinculam o código a um modelo de dados específico quando usam tipos derivados. Por exemplo, se um typedef for redefinido como tipos base de inteiro diferentes, dependendo do modelo de dados, não será possível usar uma única conversão de C que funcione em ambos os modelos de dados sem conhecer explicitamente os dois tipos subjacentes, incluindo uma expressão de conversão ou definindo várias seqüências de formato. O compilador de D resolve esse problema automaticamente, permitindo que você omita os prefixos de tamanho e determine automaticamente o tamanho do argumento.
Os prefixos de tamanho podem ser colocados logo antes do nome de conversão e após quaisquer sinalizadores, larguras e especificadores de precisão. Os prefixos de tamanho são da seguinte forma:
Um h opcional especifica que a seguinte conversão d, i, o, u, x ou X se aplica a um short ou unsigned short.
Um l opcional especifica que a seguinte conversão d, i, o, u, x ou X se aplica a um long ou unsigned long.
Um ll opcional especifica que a seguinte conversão d, i, o, u, x ou X se aplica a um long long ou unsigned long long.
Um L opcional especifica que a seguinte conversão e, E, f, g ou G se aplica a um long double.
Um l opcional especifica que a seguinte conversão c se aplica a um argumento wint_t, e que o seguinte caractere de conversão s se aplica a um ponteiro para um argumento wchar_t.