Valore di ritorno della funzione printf () in C

La printf() restituirà il numero di caratteri stampati. Ma nel codice qui sotto perché stampa 5.

 int a=1000; printf("%d",printf("\n%d",a)); 

Stampa “1000” una volta e uno spazio, quindi abbiamo 2 caratteri.

Dovrebbe produrre “1000 2”. Ma sta emettendo “1000 5”.

Il numero di caratteri in uscita è 5. 1000 è di quattro caratteri. \n è un personaggio

printf non restituisce il numero di output “items” come fa la famiglia di funzioni scanf per input. Restituisce il conteggio dei caratteri effettivo.

La chiamata interna viene eseguita per prima, stampa 5 caratteri ( \n , 1 , 0 , 0 , 0 ) e restituisce 5 .

La chiamata esterna avviene quindi e stampa il 5 che è stato restituito dalla chiamata interna.

supponiamo espressione:

 int a=10; printf("a=%d",printf("b=%d",a)); 

produzione

 b=10 a=4; 

b causa del valore assegnato a b ie

 b=10; 

e

 b,=,1,0 

conta come quattro e assegna alla a ie:

 a=4; 

Dovresti chiaramente notare che 1000 è di 4 lettere e hai \n che è un personaggio da solo

Prima controlliamo l’output di printf interno:

 /n, 1, 0, 0, 0 

Ora devi considerare 2 cose:

 1) You have to take escape sequences like '\n','\t' etc into account. 2) You have to take 1 escape sequence as 1 character (not 2) 

La stampa esterna restituisce il conteggio dei caratteri effettivo della stampa interna che è 5. Quindi printf esterno restituisce 5.

printf () restituisce il conteggio dei caratteri effettivi dove come qui abbiamo il carattere 4 (“1000”) + 1 (“\ n”) in modo da dare l’output 1000 e quindi 5 che è il numero di caratteri della funzione printf interna e sembra come 10005

Il numero 1000 è composto da quattro cifre quindi richiede quattro caratteri per stamparlo. Quattro caratteri più l’avanzamento riga sono cinque caratteri.

in printf("%d",printf("\n%d",a)); printf("\n%d",a) stamperà un carattere di nuova riga '\n' e il valore intero 1000 che rende un totale di 5 caratteri. Viene dapprima chiamata la prima stampa interna che stampa la nuova riga e 1000, quindi il valore restituito 5 viene stampato dalla stampa esterna.

Printf restituisce il numero di caratteri stampato correttamente dalla funzione.

inserisci la descrizione dell'immagine qui

Come puoi vedere nell’immagine, prima l’ultima stampa mostra cosa deve mostrare, per esempio 3223433 1233. Ora, l’ultima stampa restituisce il numero di caratteri nella stringa / int che viene visualizzata. Quindi, la penultima penultima mostra 12, che è la lunghezza di quello che viene visualizzato dall’ultima stampa, per esempio 3223433 1233. Il terzo penultimo visualizza ora 2, che è la lunghezza di 12. Poiché la lunghezza di 12 è 2, viene visualizzata accanto e quindi poiché la lunghezza di 2 è 1, 1 viene visualizzato e 1 di nuovo alla fine, poiché è la lunghezza di 1.

Solo per aggiungere un po ‘di più, il numero di caratteri restituito da printf() può dipendere dagli specificatori dei parametri

ex:

 int a= 0xff; printf(" : %i characters\n" ,printf("%x",a)); //prints ff : 2 characters printf(" : %i characters\n" ,printf("%d",a)); //prints 255 : 3 characters 
 int a=1000; printf("%d",printf("\n%d",a)); 

Ci sono 2 funzioni printf () in questo frammento di codice:

  1. inner printf ()
  2. external printf ()

In primo luogo, verrà eseguito printf () interno e verrà stampato 1000 e verrà eseguito il printf () esterno.

Si noti che printf() restituisce il numero di caratteri che stampa e le sequenze di escape vengono contate come carattere in printf ().

Quindi, eseguendo la stampa interna (), abbiamo 5 (perché ‘\ n’, 1, 0, 0, 0 sono 5 caratteri), Ora, quando viene eseguito il printf esterno (), viene stampato 5.

printf () restituisce il totale n. di carattere stampato su console, si passa 1000; quindi la prima funzione printf () interna funzionerà e stamperà 1000, e qui no. di carattere è 4. Uno è \ n.

Quindi no totale di carattere diventa 5, ecco perché stampa 1000 5.