Warum steht% d für Integer?

77

Ich weiß, dass dies nicht produktiv klingt, aber ich suche nach einer Möglichkeit, alle Formatierungscodes für printfAnrufe zu speichern. %s, %p, %fSind offensichtlich, aber ich kann nicht verstehen , wo %dherkommt. Wird %ischon von etwas anderem genommen?

grasingerm
quelle
21
Meine beste Vermutung ist dezimal
Juan Mendes
Ja, das ist eine ironische +1, interessante Frage.
Daniel
Obwohl es keine echte Programmierfrage ist und ich dazu neige, diese zu schließen :)
Juan Mendes
9
"d" steht für "Steht für Integer". Leicht genug.
einsames Boot

Antworten:

97

Es steht für " dezimal " (Basis 10), nicht für "ganze Zahl". Sie können verwenden %x, um hexadezimal (Basis 16) und oktal (Basis 8) %ozu drucken . Eine ganze Zahl könnte in einer dieser Basen liegen.

In printf()können Sie %ials Synonym für verwenden %d, wenn Sie "Ganzzahl" anstelle von "Dezimal" angeben möchten, dies wird jedoch %dim Allgemeinen bevorzugt, da es spezifischer ist.

Bei der Eingabe verwenden scanf(), können Sie verwenden beide verwenden %iund %dauch. %ibedeutet, dass es als Ganzzahl in einer beliebigen Basis (oktal, hexadezimal oder dezimal, wie durch ein 0oder ein 0xPräfix angegeben) %danalysiert wird , während bedeutet, dass es als dezimale Ganzzahl analysiert wird.

Hier ist ein Beispiel von allen in Aktion:

Sie sollten daher nur verwenden, %iwenn die Eingabebasis vom Präfix abhängen soll. wenn die Eingangsbasis fixiert werden soll, sollten Sie verwenden %d, %xoder %o. Insbesondere die Tatsache, dass ein Leading 0Sie in den Oktalmodus versetzt, kann Sie einholen.

Brian Campbell
quelle
dann ist die eigentliche frage "warum nennt java integers 'int'", wenn ein long und ein short und ein byte ... auch ints sind
bharal
7

http://en.wikipedia.org/wiki/Printf_format_string scheint zu sagen, dass es sich um eine Dezimalzahl handelt, wie ich vermutet hatte

d,i

int als vorzeichenbehaftete Dezimalzahl. '% d' und '% i' sind synonym für die Ausgabe, unterscheiden sich jedoch bei Verwendung mit scanf () für die Eingabe (bei Verwendung von% i wird eine Zahl als hexadezimal interpretiert, wenn 0x vorangestellt ist, und oktal, wenn 0 vorangestellt ist.)

Juan Mendes
quelle