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) %o
zu drucken . Eine ganze Zahl könnte in einer dieser Basen liegen.
In printf()
können Sie %i
als Synonym für verwenden %d
, wenn Sie "Ganzzahl" anstelle von "Dezimal" angeben möchten, dies wird jedoch %d
im Allgemeinen bevorzugt, da es spezifischer ist.
Bei der Eingabe verwenden scanf()
, können Sie verwenden beide verwenden %i
und %d
auch. %i
bedeutet, dass es als Ganzzahl in einer beliebigen Basis (oktal, hexadezimal oder dezimal, wie durch ein 0
oder ein 0x
Präfix angegeben) %d
analysiert wird , während bedeutet, dass es als dezimale Ganzzahl analysiert wird.
Hier ist ein Beispiel von allen 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 daher nur verwenden, %i
wenn die Eingabebasis vom Präfix abhängen soll. wenn die Eingangsbasis fixiert werden soll, sollten Sie verwenden %d
, %x
oder %o
. Insbesondere die Tatsache, dass ein Leading 0
Sie in den Oktalmodus versetzt, kann Sie einholen.