1. ホーム
  2. c

なぜ%dはIntegerの略なのですか?

2023-08-26 21:14:39

質問

生産的でないことは承知していますが、以下のフォーマットコードをすべて記憶する方法を探しています。 printf を呼び出します。 %s , %p , %f はすべて明白ですが、どこが %d はどこから来るのかがわからない。は %i はすでに他の何かによって取られていますか?

どのように解決するのですか?

"の略です。 10進数 10進数)であり、integer.quot.ではありません。 %x で印刷します。 16進数 (16進数)で表示し %o で印刷する場合は 八進数 (ベース8)で表示します。整数はこれらの基数のいずれかになる可能性があります。

printf() を使用することができます。 %i の同義語として %d の代わりに "integer"を表示したい場合、quot;decimal,quot;の代わりに %d の方がより具体的であるため、一般的にはこちらが好まれます。

入力では scanf() の両方を使用することができます。 %i%d と同様に %i は、任意の基数(8進数、16進数、10進数、で示される)の整数として解析することを意味します。 0 または 0x という接頭辞があります)、一方 %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進数モードになることは、あなたを追いつめることができます。