C言語 入門 変換指定子分かりやすく解説します!(%p,%x,…)

C言語
変換指定子について調べる人

変換指定子についてもう一度解説して欲しい。

%pとか%xとか種類が多すぎるからまとめて欲しいなー。

こちらの悩みを解決しますね。

✔本記事の内容

・変換指定子って何?

・入力指定子の一覧

・出力指定子の一覧

・【裏技】17種類の変換指定子を覚える方法

・変換指定子を効率的に学ぶ方法

変換指定子って何?

変換指定子とは、「変数に代入されている文字や数字を使用する際に、どのように変換するか?」を指定するためのものです。たとえば、「scanf」や「printf」を使う際に必要になります。

「%c」、「%d」などが有名で、知っている人も多いと思いますが、ここでは全種類解説していきます。

先にデータ型の解説を読んでおくと分かりやすいかもです。(バイト長も解説しています)

変換書式は「入力書式」と「出力書式」の2つのグループに分けることができます。「入力書式」は入力するときに使い、「出力書式」は出力するときに使います。

入力指定子の一覧

変換指定子対応する型意味
%cchar1文字だけ入力
%schar(配列)文字列を入力
%dint整数を10進数として入力
%ldlong倍精度整数を10進数として入力
%hdshort単精度整数を10進数として入力
%uunsigned int符号なし整数を10進数として入力
%luunsigned long符号なし倍精度整数を10進数として入力
%huunsigned short符号なし単精度整数を10進数として入力
%oint, short, unsigned int整数を8進数として入力
%lolong, unsigned long倍精度整数を8進数として入力
%xint, unsigned int整数を16進数として入力
%lxlong, unsigned long倍精度整数を16進数として入力
%ffloat実数を入力
%lfdouble倍精度実数を入力

「倍精度」は倍のバイト長であることを意味します。上から順に解説していきます。

文字の入力

「%c」、「%s」は文字の入力をするための変換指定子です。「%s」は配列に対応しているため、文字列の入力が可能です。

整数を10進数で入力

「%d」、「%ld」、「%hd」、「%u」、「%lu」、「%hu」は整数を10進数で入力するための変換指定子で、「%u」「%lu」「%hu」は符号を付けない場合に使います。また、「%ld」「%lu」は倍精度整数の場合に使い、「%hd」、「%hu」は単精度整数の場合に使います。

整数を8進数で入力

「%o」、「%lo」は整数を8進数で入力するための変換指定子で、「%lo」は倍精度整数を入力するときに使います。

整数を16進数で入力

「%x」、「%lx」は整数を16進数で入力するための変換指定子で、「%lx」は倍精度整数を入力するときに使います。

実数を入力

「%f」、「%lf」は実数を入力するための変換指定子で、「%lf」は倍精度実数を入力するときに使います。

出力指定子の一覧

変換指定子対応する型意味
%cchar1文字だけ出力
%schar(配列)文字列を出力
%dint, short整数を10進数で出力
%ldlong倍精度整数を10進数で出力
%uunsigned int, unsigned short符号なし整数を10進数で出力
%luunsigned long符号なし倍精度整数を10進数で出力
%oint, short, unsigned int, unsigned short整数を8進数で出力
%lolong, unsigned long倍精度整数を8進数で出力
%xint, short, unsigned int, unsigned short整数を16進数で出力
%lxlong, unsigned long倍精度整数を16進数で出力
%ffloat実数を出力
%lfdouble倍精度実数を出力
%efloat実数を指数表示で出力
%gfloat実数を最適な形式で出力
%pアドレスを16進数で出力

出力書式の解説は下の記事でより詳しい解説をしているのでどうぞ。

≫C言語 入門 printfの使い方をまるっと解説します!

文字の出力

「%c」、「%s」は文字の出力をするための変換指定子です。「%s」は配列に対応しているため、文字列の出力が可能です。

整数を10進数で出力

「%d」、「%ld」、「%u」、「%lu」は整数を10進数で出力するための変換指定子で、「%u」「%lu」は符号を付けない場合に使います。また、「%ld」「%lu」は倍精度整数の場合に使います。

整数を8進数で出力

「%o」、「%lo」は整数を8進数で出力するための変換指定子で、「%lo」は倍精度整数を出力するときに使います。

整数を16進数で出力

「%x」、「%lx」は整数を16進数で出力するための変換指定子で、「%lx」は倍精度整数を出力するときに使います。

実数を出力

「%f」、「%lf」、「%e」、「%g」は実数を出力するための変換指定子で、「%lf」は倍精度実数を出力するとき、「%e」は指数表示で出力するとき、「%g」は最適な形式で出力するときに使います。

アドレスを16進数で出力

「%p」は16進数でアドレスを出力するための変換指定子です。

もっと詳しく勉強したい方は、こちらを参考にしてください。

≫C言語 入門 printfの使い方をまるっと解説します!

このように、いくつかに分けると覚えやすいですよね。

【裏技】17種類の変換指定子を覚える方法

数えてみると、今回紹介した変換指定子は全部で16種類あります。まともに1つひとつ覚えるのは効率がとても悪いので、変換指定子を簡単に全種類覚える裏技を紹介します。

①それぞれの関連性を考えてまとめてみる

②関連性のあるものをまとめて覚える

③実際にプログラミングしてみる

ほとんどの人は①、②を飛ばして無理に覚えようとしてしまいます。①➔②➔③の順番に実行しましょう。①はこのサイトを見ている人はやらなくてOKです。画面をスクショしたり、ブックマークして何度も繰り返し確認しましょう。

その後は、実際にプログラミングをして「アウトプット」する作業が必要です。ネットに載っているものではなく、自分でプログラムを考えるとより効果があります。

変換指定子を効率的に学ぶ方法

ここまで読んでいる方は、本当に全種類覚える必要があるのか疑問になってきますよね。

実際、8進数で表示、16進数で表示することなんてほとんどないです。

勉強中に出てきたものだけを覚えて、残りは覚えずに他の学習に時間を使った方が効率的です。無理に何時間もかけて覚えるのは得策ではないですね。

まとめ:変換指定子分かりやすく解説します!(%p,%x,…)

何度も言うように、変換指定子を全種類覚える必要はありません。他の勉強をした方が効率的です。BlogMuuではC言語の勉強ができるので参考にしてみてください。

今回は以上です!

変換指定子についてもっと詳しく知りたい方はどうぞ。

ではでは~👋