Pregunta de salida C

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% .