Warum steht %d für Integer?

Lesezeit: 2 Minuten

Ich weiß, das klingt nicht produktiv, aber ich suche nach einer Möglichkeit, mir alle Formatierungscodes für zu merken printf Anrufe. %s, %p, %f sind alle offensichtlich, aber ich kann nicht verstehen wo %d kommt von. Ist %i schon von etwas anderem belegt?

  • Meine beste Vermutung ist dezimal

    – Ruan Mendes

    16. November 2012 um 1:21 Uhr

  • Ja, aber das ist irgendwie ironisch +1, interessante Frage.

    – Daniel

    16. November 2012 um 1:21 Uhr


  • Obwohl es keine echte Programmierfrage ist und ich dazu neige, diese zu schließen 🙂

    – Ruan Mendes

    16. November 2012 um 1:22 Uhr


  • „d“ steht für „Does stand for integer“. Leicht genug.

    – Einsames Boot

    16. November 2012 um 15:27 Uhr

Benutzeravatar von Brian Campbell
Brian Campell

Es steht für “Dezimal” (Basis 10), nicht “Integer”. Sie können verwenden %x einzudrucken hexadezimal (Basis 16) und %o einzudrucken oktal (Basis 8). Eine ganze Zahl könnte in jeder dieser Basen stehen.

Im printf()können Sie verwenden %i als Synonym für %dwenn Sie lieber “Integer” statt “Dezimal” angeben möchten, aber %d wird im Allgemeinen bevorzugt, da es spezifischer ist.

Bei der Eingabe mit scanf()Sie können beide verwenden %i und %d auch. %i bedeutet, es als Ganzzahl mit beliebiger Basis zu analysieren (oktal, hexadezimal oder dezimal, wie durch a angegeben 0 oder 0x Präfix), während %d bedeutet, es als Dezimalzahl zu analysieren.

Hier ist ein Beispiel für alle in Aktion:

#include <stdio.h>

int main() {
  int out = 10;
  int in[4];

  printf("%d %i %x %o\n", out, out, out, out);
  sscanf("010 010 010 010", "%d %i %x %o", &in[0], &in[1], &in[2], &in[3]);
  printf("%d %d %d %d\n", in[0], in[1], in[2], in[3]);
  sscanf("0x10 10 010", "%i %i %i", &in[0], &in[1], &in[2]);
  printf("%d %d %d\n", in[0], in[1], in[2]);

  return 0;
}

Sie sollten also nur verwenden %i wenn Sie möchten, dass die Eingabebasis vom Präfix abhängt; wenn die Eingabebasis fest sein soll, sollten Sie verwenden %d, %xoder %o. Insbesondere die Tatsache, dass eine führende 0 versetzt Sie in den Oktalmodus, kann Sie einholen.

http://en.wikipedia.org/wiki/Printf_format_string scheint zu sagen, dass es für Dezimalzahlen ist, wie ich vermutet hatte

d,i

int als vorzeichenbehaftete Dezimalzahl. ‘%d’ und ‘%i’ sind Synonyme für die Ausgabe, unterscheiden sich jedoch, wenn sie mit scanf() für die Eingabe verwendet werden (die Verwendung von %i interpretiert eine Zahl als hexadezimal, wenn ihr 0x vorangestellt ist, und als oktal, wenn ihr eine 0 vorangestellt ist.)

1418640cookie-checkWarum steht %d für Integer?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy