
Edgar Palomino
Pregunta¿cual es la diferencia de %d y %i, veo que lo usan de manera relativamente indiscriminada?
- Para int: 2 or 4 bytes -32,768 a 32,767 o -2,147,483,648 a 2,147,483,647 Guarda numeros enteros.
- Para double: 8 bytes 2.3E-308 a 1.7E+308 Igual que Float pero con mayor precisión (hasta 15 digitos decimales) y mayor rango.

Irving Juárez
Algunas veces no se puede compilar un programa con %i, en cambio %d es mas eficiente y %ld es mas eficiente para números muy largos. Se recomienda usar mas el %d
Santiago José Hoyos Sanabria
Para printf hay diferentes marcadores de posición dependiendo del tipo de dato: %c para chars %f para floats, doubles %i o %d para ints %li para longs %s para strings Puedes leer más aquí: https://en.wikibooks.org/wiki/C_Programming/Simple_input_and_output

Edgar Palomino
Pero si declaran un int y el printf, le pasa el %d, imprime, no ocasiona ningún problema, esa es mas bien mi duda, eso es una mala practica o da los mismo, me queda claro que int, float, char, etc. es para reservar la memoria del tipo de dato, pero en la impresión es donde no se porque ponen a veces %i o %d, aun cuando lo que declararon fue int; ejemplo: int a; printf("Dame un valor"); scanf("%d", &a); printf(Este es el valor: %i\n, a);
esto compila y no arroja error. ¿Esto es una mala practica?, o no hay diferencia si declaro todo en %d o %i.

Efraín Hernández García
La diferencia radica para los tipos de datos. Y sobre todo el limite de espacio que tiene cada variable:
ESPERO HABER RESUELTO TU DUDA