これは生産的ではないように思えますが、printf
呼び出しのすべての書式設定コードを覚える方法を探しています。%s
、%p
、すべて明らかですが、どこから来たの%f
かわかりません。%d
すでに他の何か%i
に取られていますか?
2 に答える
これは、 「整数」ではなく、「10進数」 (基数 10) を表します。を使用%x
して、16 進数(基数 16) で%o
印刷したり、 8 進数(基数 8) で印刷したりできます。整数は、これらの基数のいずれかにある可能性があります。
では、「10 進数」ではなく「整数」を示すことを好む場合は、 の同義語としてprintf()
使用できますが、より具体的であるため、一般的に好まれます。%i
%d
%d
入力時に を使用すると、とのscanf()
両方を使用できます。は、任意の基数 (または接頭辞で示されるように、8 進数、16 進数、または 10 進数)の整数として解析することを意味し、10 進数の整数として解析することを意味します。%i
%d
%i
0
0x
%d
これらすべてが実際に動作している例を次に示します。
#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 進数として解釈されます)。