Sto cercando di trovare qual è il limite consentito per il numero di caratteri da stampare da printf()
nello standard C. Ho trovato solo lo answer in un forum di discussione, che indica INT_MAX
.Printf() - limite di caratteri stampati
Per esempio, ho controllato il seguente:
#include <stdio.h>
// INT_MAX 2147483647
int main()
{
int x=3;
int y = printf("%2147483647d \n\n", x); --> Confirms INT_MAX ?
// If I change the above to 2147483648, y in set to -1
printf("y = %d\n\n", y);
return 0;
}
Volevo chiedere perché è printf()
limitato dalla INT_MAX
? Qualcuno può indicare un ragionamento standard C o un riferimento al codice sorgente?
Modifica
La risposta più vicina che ho trovato è stato per fprintf()
. A questo link, a pagina 568, la sua menzionata (sotto un comportamento indefinito):
The number of characters or wide characters transmitted by a formatted output
function (or written to an array, or that would have been written to an array) is
greater than INT_MAX.
Può la sopra giustificare per printf()
pure?
Questo 'printf()' è limitato da 'INT_MAX' non è sorprendente. In caso di dubbio, è limitato da 'INT_MAX'. –
Ma qual è la ragione? – Jake
Ovviamente utilizza 'int' per memorizzare la quantità di caratteri stampati. Non è possibile memorizzare un valore superiore a 'INT_MAX' in' int'. –