Ich versuche zu finden, was ist die zulässige Grenze für die Anzahl der Zeichen von printf()
in der C-Standard gedruckt werden. Ich fand die answer nur in einem Diskussionsforum, das INT_MAX
anzeigt.Printf() - gedruckte Zeichen Grenze
Zum Beispiel überprüfte ich die folgenden:
#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;
}
wollte ich fragen, warum printf()
von INT_MAX
begrenzt ist? Kann jemand auf eine C-Standard-Argumentation oder Quellcode-Referenz hinweisen?
bearbeiten
Die nächste Antwort war ich für fprintf()
gefunden. Zu diesem link, auf Seite 568, seine erwähnt (unter undefinierten Verhalten):
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.
Wird die oben für printf()
rechtfertigen auch?
Das 'printf()' ist begrenzt durch 'INT_MAX' ist nicht überraschend. Im Zweifelsfall ist es begrenzt durch 'INT_MAX'. –
Aber was ist der Grund? – Jake
Es verwendet offensichtlich "int" zum Speichern der Anzahl der gedruckten Zeichen. Sie können keinen Wert größer als 'INT_MAX' in' int' speichern. –