C question de sortie

Dupliquer possible:
C question de sortie…

Pourquoi son o / p est %% ??

int main(void) { printf("%%%\n"); return 0; } 

alors que pour programme inférieur o / p est%?

 int main(void) { printf("%%%"); return 0; } 

peux-tu me dire où est la différence?

C’est un comportement indéfini. La section 7.19.6.1/9 du C99 stipule:

Si une spécification de conversion n’est pas valide, le comportement n’est pas défini.

et aucune des sections précédentes n’autorise un spécificateur de conversion d’un espace. Ils sont limités aux caractères de l’ensemble diouxXfFeEgGaAcsPn% .