これは生産的に聞こえないことは知っていますが、printf
呼び出しのすべてのフォーマットコードを記憶する方法を探しています。 %s
、%p
、%f
はすべて明らかですが、%d
がどこから来たのか理解できません。 %i
はすでに別のものに使用されていますか?
「整数」ではなく、「 decimal 」(10を基数)を表します。 %x
を使用して 16進数 (ベース16)で印刷し、%o
を使用して 8進数 (ベース8)で印刷できます。整数は、これらのベースのいずれかにあります。
printf()
では、%i
を%d
の同義語として使用できます。「10進数」ではなく「整数」を指定したい場合は、%d
が一般的です。より具体的に。
入力では、scanf()
を使用して、%i
と%d
の両方を使用することもできます。 %i
は、任意の基数(0
または0x
プレフィックスで示される8進数、16進数、または10進数)の整数として解析することを意味し、%d
は、 10進整数。
動作中のすべての例を次に示します。
#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;
}
したがって、入力ベースをプレフィックスに依存させる場合にのみ、%i
を使用する必要があります。入力ベースを修正する必要がある場合は、%d
、%x
、または%o
を使用する必要があります。特に、先頭の0
が8進数モードになっているという事実に追いつくことができます。
http://en.wikipedia.org/wiki/Printf_format_string は、私が推測したように10進数であると言っているようです
d,i
符号付き10進数としてのint。 「%d」と「%i」は出力の同義語ですが、入力にscanf()を使用する場合は異なります(%iを使用すると、数値が0xで始まる場合は16進数、0で始まる場合は8進数として解釈されます)