Was ist der Unterschied zwischen %d und %*d in der c-Sprache?
Was ist %*d
? Ich weiß, dass %d
ist für integers
, so denke ich, dass %*d
muss auch im Zusammenhang mit integer nur? Was ist der Zweck davon? Was tut es?
int a=10,b=20;
printf("\n%d%d",a,b);
printf("\n%*d%*d",a,b);
Ergebnis ist
10 20
1775 1775
- Sieht aus wie eine Breite Bezeichner: cplusplus.com/reference/clibrary/cstdio/printf
- Sie schreiben sollte, dass da eine Antwort..
- es ist nur eine Verknüpfung, die nicht qualifizieren, da eine Antwort. Ich bin zu faul zum ausbauen...
- schön runter voten.. dafür einen bestimmten Grund ?
- klar tut es downvotes verdient. Die Antwort ist sofort verfügbar, einfach durch das Lesen der Dokumentation.
- So ziemlich alle Fragen beantwortet sind, durch das Lesen einiger Dokumentationen irgendwo. Es würde nicht erforderlich sein, ALSO wenn es nur so einfach ist das.
- Ist es wirklich im Zusammenhang mit der Breite Spezifizierer?
- Für die downvotes, könnte es gerechtfertigt sein, von "diese Frage zeigt keine Forschung ..." aber ich Neige zu schneiden Neulinge ein wenig Locker, aber, anders als guga, ich habe das Gefühl zu gleichgültig an diesem morgen zur post Umkehrung zu Stimmen :-). Das Letzte
printf
durch die Art und Weise ist Undefiniertes Verhalten, da sollte man übergibt vier Argumente.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
%*d
imprintf
ermöglicht Ihnen die Verwendung einer variable zur Kontrolle der Feld-Breite, entlang der Linien von:die Ihnen:
(mit jeder dieser
.
Zeichen wird ein Leerzeichen). Die*
verbraucht ein argumentwid
und died
verbraucht die42
.Form Sie haben, wie:
ist ein Undefiniertes Verhalten nach der standard, denn Sie bieten sollte vier Argumente, die nach dem format-string, nicht zwei (und guten Compiler wie
gcc
wird Ihnen sagen, über diese, wenn Sie bump bis die Warnung Ebene). VonC11 7.20.6 Formatted input/output functions
:Es sollte so etwas wie:
Und der Grund, Sie sind immer die seltsame Ausgabe ist aufgrund, dass Undefiniertes Verhalten. Diese hervorragende Antwort zeigt Ihnen die Art von Dinge, die schief gehen können (und warum), wenn Sie nicht die Regeln befolgen, besonders in Bezug auf diese situation.
Nun würde ich nicht erwarten, dass dies eine Fehlstellung Problem, da Sie mit
int
für alle Datentypen, die aber, wie bei allen undefinierten Verhalten, alles passieren kann.Wenn Sie mit scanf () - Funktionen, es bedeutet, dass ein integer geparst wird, aber das Ergebnis ist nicht überall gespeichert.
Wenn Sie mit printf() Funktionen, es heißt, die Breite argument angegeben wird die nächste format-argument.
Den * verwendet als Hinweis darauf, dass die Breite übergeben wird als parameter von printf