Posible duplicado:
Pregunta de salida C …
¿Por qué su o / p es %%?
int main(void) { printf("%%%\n"); return 0; }
mientras que por debajo del progtwig o / p es%?
int main(void) { printf("%%%"); return 0; }
¿Puedes decirme dónde está realmente la diferencia?
Es un comportamiento indefinido. La sección 7.19.6.1/9 de C99 establece:
Si una especificación de conversión no es válida, el comportamiento no está definido.
y ninguna de las secciones anteriores permite un especificador de conversión de un espacio. Están limitados a los caracteres del conjunto diouxXfFeEgGaAcsPn%
.