Los prefijos de tamaño son necesarios en los programas ANSI-C que utilizan printf(3C) para indicar el tamaño y el tipo del argumento de conversión. El compilador del lenguaje D realiza automáticamente este procesamiento para las llamadas a printf(), por lo que no es necesario utilizar prefijos. Aunque los prefijos de tamaño se proporcionan para la compatibilidad con C, se desaconseja explícitamente su uso en programas D, ya que enlazan el código a un modelo de datos específico al utilizar tipos derivados. Por ejemplo, si typedef se vuelve a definir con tipos de enteros diferentes en función del modelo de datos, no se puede utilizar una única conversión de C que funcione en ambos modelos de datos sin conocer de forma explícita los dos tipos subyacentes, y sin incluir una expresión de conversión de tipo o definir varias cadenas de formato. El compilador de D resuelve este problema automáticamente permitiendo omitir los prefijos de tamaño y determinando automáticamente el tamaño del argumento.
Los prefijos de tamaño pueden insertarse justo antes del nombre de la conversión de formato, y detrás de los especificadores de indicadores, ancho y precisión. Los prefijos de tamaño son los siguientes:
El elemento h opcional especifica que se aplicará una conversión d, i, o, u, x o X a short o unsigned short.
Un elemento l opcional especifica que se aplicará una conversión d, i, o, u, x o X a long o unsigned long.
Un elemento ll opcional especifica que se aplicará una conversión d, i, o, u, x o X a long long o unsigned long long.
Un elemento L opcional especifica que se aplicará una conversión e, E, f, g o G a long double.
Un elemento l opcional especifica que se aplicará una conversión c a un argumento wint_t y que se aplicará el carácter de conversión s a un puntero de un argumento wchar_t.