Was ist der Unterschied zwischen %d
und %i
bei Verwendung als Formatspezifizierer in printf
?
202
Sie sind die gleichen, wenn sie für die Ausgabe verwendet werden, z printf
. B. mit .
Diese unterscheiden sich jedoch, wenn sie als Eingabespezifizierer verwendet werden, z. B. mit scanf
, wobei %d
eine Ganzzahl als vorzeichenbehaftete Dezimalzahl gescannt wird, der %i
Standardwert jedoch dezimal ist, aber auch hexadezimal (wenn vorangestellt 0x
) und oktal (falls vorangestellt 0
) zulässig sind .
Also 033
wäre 27 mit %i
aber 33 mit %d
.
printf
und zu sehenscanf
.Diese sind identisch für,
printf
aber unterschiedlich fürscanf
. Fürprintf
beide%d
und%i
bezeichnen Sie eine vorzeichenbehaftete Dezimalzahl. Fürscanf
,%d
und%i
bedeutet auch eine vorzeichenbehaftete ganze Zahl , aber%i
wenn der Eingang inteprets als Hexadezimalzahl mit vorangestellter0x
und oktalen wenn durch voran0
und ansonsten interpretiert die Eingabe als Dezimalzahl.quelle
Es gibt keinen Unterschied zwischen den
%i
und%d
Formatbezeichnern fürprintf
. Wir können sehen , von dem Teilwert Entwurf C99 - Standard Abschnitt7.19.6.1
Der fprintf Funktion , die auch decktprintf
in Bezug auf Formatbezeich und es sagt in Absatz 8 :und enthält die folgende Kugel:
Wenn
scanf
es jedoch einen Unterschied gibt,%d
nehmen Sie die Basis 10 an, während%i
die Basis automatisch erkannt wird. Wir können dies sehen, indem wir zum Abschnitt7.19.6.2
Die fscanf-Funktion gehen, diescanf
in Bezug auf den Formatbezeichner behandelt wird. In Absatz 12 heißt es:und umfasst Folgendes:
quelle
Es gibt keine in
printf
- die beiden sind Synonyme.quelle
scanf()
Formatzeichenfolgen, wie in der akzeptierten Antwort angegeben.