Il backslash viene elaborato dal compilatore quando si interpreta il testo sorgente del programma. Quindi il risultato comune è che il testo sorgente "\%"
produce una stringa contenente "%".
La stringa di formato viene interpretata dalla routine printf
, quindi elabora i caratteri passati ad essa. A questo punto, il backslash non è più presente, quindi printf
non lo vede mai.
Tecnicamente, \%
non è legale in una stringa letterale. Il carattere \
inizia una sequenza di escape, e le uniche sequenze di escape giuridiche nella C 2011 6.4.4.4 1. Sono \
seguito da '
, "
, ?
, \
, a
, b
, f
, n
, r
, t
, v
, da una a tre cifre ottali, x
e cifre esadecimali, u
e quattro cifre esadecimali o U
e otto cifre esadecimali.
Se printf
era stato progettato in modo che una barra rovesciata sarebbe sfuggito un per cento, allora si dovrà passare un backslash di escape del backslash nel testo di partenza, in modo che avrebbe dovuto scrivere:
printf("\\%");
fonte
2013-07-23 13:28:44
Controlla questo link per ulteriori informazioni; http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.cmds/doc/aixcmds4/printf.htm – JNL
Questo è solo il modo di printf. Preferisco usare questo riferimento http://www.cplusplus.com/reference/cstdio/printf/ – GreenScape