Dopo aver letto this Ho iniziato a pensare di aver appreso un bottino su printf()
. Improvvisamente ho trovato seguente frammento di codice da this libro:Operatore ternario all'interno di printf
int main()
{
char str[]="Hello";
int i=5,j=10;
printf(i>j?"%50s":"%s",str); //unable to understand this
return 0;
}
Sorprendentemente sopra codice viene eseguito senza errori e stampe Ciao. Come per la mia conoscenza che segue è la sintassi di printf()
:
int printf(const char *format,argument_list);
Quindi, secondo questa sintassi, printf()
dovrebbe iniziare con stringa di formato. Ma come puoi vedere sopra il codice printf()
inizia con i>j
. Significa che ho torto nell'interpretare la sintassi di printf()? L'inserimento dell'operatore ternario all'interno di printf() è un caso speciale?
EDIT
che so di operatore ternario sto chiedendo circa primo argomento di printf()
che dovrebbe essere const char * che non sembra nel mio esempio.
Il risultato dell'espressione all'interno del primo parametro deve essere un puntatore a un array di caratteri costante, quindi nulla di sorprendente. –
vuoi dire qualcosa anche senza virgolette è puntatore a stringa costante –
forse le cose diventano più chiare se la scrivi in questo modo: 'printf ((i> j?"% 50s ":"% s "), str)' –