Sé que esto no suena productivo, pero estoy buscando una forma de recordar todos los códigos de formato de las printfllamadas. %s, %p, %fTodas son obvias, pero no puedo entender de dónde %dviene. ¿ %iYa está tomado por algo más?
c
formatting
printf
grasingerm
fuente
fuente

Respuestas:
Significa " decimal " (base 10), no "entero". Puede utilizar
%xpara imprimir en hexadecimal (base 16) y%opara imprimir en octal (base 8). Un número entero podría estar en cualquiera de estas bases.En
printf(), puede usarlo%icomo sinónimo de%d, si prefiere indicar "entero" en lugar de "decimal", pero%dgeneralmente se prefiere porque es más específico.En la entrada, usando
scanf(), puede usar use both%iand%das well.%isignifica analizarlo como un entero en cualquier base (octal, hexadecimal o decimal, como lo indica un prefijo0o0x), mientras que%dsignifica analizarlo como un entero decimal.Aquí hay un ejemplo de todos ellos en acción:
#include <stdio.h> int main() { int out = 10; int in[4]; printf("%d %i %x %o\n", out, out, out, out); sscanf("010 010 010 010", "%d %i %x %o", &in[0], &in[1], &in[2], &in[3]); printf("%d %d %d %d\n", in[0], in[1], in[2], in[3]); sscanf("0x10 10 010", "%i %i %i", &in[0], &in[1], &in[2]); printf("%d %d %d\n", in[0], in[1], in[2]); return 0; }Por lo tanto, solo debe usar
%isi desea que la base de entrada dependa del prefijo; si la base de entrada debe ser fijo, se debe utilizar%d,%xo%o. En particular, el hecho de que un líder lo0ponga en modo octal puede atraparlo.fuente
http://en.wikipedia.org/wiki/Printf_format_string parece decir que es para decimal como había adivinado
d,ifuente