ユーニックス総合研究所

C言語の%dの意味とは?【printfの出力変換指定子】

  • 作成日: 2022-12-20
  • 更新日: 2023-12-24
  • カテゴリ: C言語

C言語の%dの意味は?

C言語で時々出てくる「%d」ってありますよね。
これどういう意味なんでしょうか?
一体何をやっているんでしょうかこれは?

結論を言いますと、「%d」は

  • printf関数で整数を出力したい時に使う

ということになります。

この記事ではC言語の「%d」について具体的に解説していきます。

関連記事
C言語でcharをintに変換する方法
C言語でenumをtypedefして使う【列挙型】
C言語でforeachマクロを実装する方法
C言語でnull判定する方法【NULL, 比較】
C言語でできることを解説!C言語歴16年の開発者が語る
C言語でオブジェクト指向する【単一継承の方法】
C言語でグローバルに関数を使う方法
C言語でシャローコピーとディープコピーを実装する

%dはどんな時に使われるのか?

C言語の「%d」はどんな時に使われるのかと言うと、これは主に

  • printf関数で使われる

ということになります。
scanf()関数で使われることもありますが、主な用途としてはprintf()関数が多いです。

printf()関数で変数の値を出力したい、特に整数の変数を出力したい時にこの「%d」という変換指定子が使われます。

🦝 < そうか、変数を出力したい時に使うのか

これは具体的なコードにするとたとえば

    int a = 10;  

    printf("%d\n", a);  // 10  

というようなコードになります。
↑の変数aが整数の変数です。
そしてこれをprintf()の引数に渡します。
そしてprintf()の第1引数の書式には「%d\n」と指定しています。
これは引数の変数を整数として画面に出力して改行を入れる、という指定になります。

↑のコードを実行すると結果は

10  

になります。

出力変換指定子とは?

出力変換指定子とはprintf()などの第1引数のフォーマットに指定できるものです。
printf()で変数を出力したい時はこの指定子を使って変数を文字列に変換する必要があります。

ですので「%d」という指定子は、int型の変数を文字列に変換するための指定なんですね。

%dを使った色々なコード

%d」の指定にはいろいろな方法があります。
それがフラグと出力幅を使った方法です。

フラグは

- ... 左に寄せて出力  
+ ... 負数でない数に「+」を付ける  

などがあります。
これはサンプルコードは

    printf("[%-10d]\n", 10);  // [10        ]  
    printf("%+d\n", 10);  // +10  

になります。
出力幅は出力全体の桁数の指定です。
たとえば「%10d」とやると桁数は10桁になります。
この状態で先ほどのようにフラグの「-」を立てると10桁の中で出力が左に寄ります。

またアスタリスクを使うと出力幅を外部から指定できるようになります。
たとえば

    printf("[%*d]\n", 5, 1);  // [    1]  

のようにです。
↑の場合、出力幅を「5」で外部から指定しています。
ですので桁数が5桁になっています。

%dの他にはどんな指定子があるのか?

%d」の他には代表的なものは↓のような指定子があります。

  • %c ... charに対応。文字を出力する指定子
  • %s ... 文字列に対応。文字列を出力する指定子
  • %f ... floatに対応。実数を出力する指定子
  • %lf ... doubleに対応。実数を出力する指定子
  • %ld ... longに対応。倍精度整数を出力する指定子

printf()で変数を出力したい時はこれらの指定子を使い分けて使う必要があります。

%dの「d」は何の略か?

%d」の「d」はおそらく「decimal(10進法)」の略ではないでしょうか。
%f」は「float」の略だと思われますしけっこう単純な命名になっています。

おわりに

今回はC言語の「%d」について解説しました。
こいつの正体はprintf()の出力変換指定子でした。
なにか参考になれば幸いです。

🦝 < %dで整数を出力!

🐭 < やったぜ