2011-04-05 3 views
-1

Pourquoi sa sortie est %% ??C question de sortie

#include<stdio.h> 
int main(void) 
{ 
     printf("% % %\n"); 
return 0; 
} 
+4

Avez-vous vraiment dû le demander sur 2 sites en 25 minutes? – Chris

Répondre

3

Si vous utilisez un %, il le voit comme une chaîne (car il ne dispose pas d'autres) et de la production spécificateurs %. Si vous utilisez %%, c'est pour imprimer % en sortie. Si vous utilisez %%%, les deux premiers seront considérés comme sortant % et le dernier comme "caractère" unique. donc vous obtenez seulement deux %.

+2

Je ne suis pas un expert C, mais les espaces ne seraient-ils pas importants? Ce pourrait juste être un comportement indéfini; voir http://stackoverflow.com/questions/5551810/c-output-question – Arjan

4

C'est un comportement indéfini et absolument quoi que ce soit peut arriver. La section 7.19.6.1/9 de C99 indique:

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