printf関数の変換指定子
当ページのリンクには広告が含まれています。
スポンサーリンク
変数の値を出力で、触れた printf 関数の変換指定子の詳細を紹介します。
printf 関数の変換指定子
まずは、変換指定子の書式を確認します。
%[フラグ][最小フィールド幅][.精度][修飾子]変換指定子
パーセント「%」からはじまり、さまざまな要素で修飾しながら、最後に変換指定子を指定します。
※ 角括弧[] で記述している部分は省略可能です。例えば[フラグ]など。
それでは変換指定子の書式をひとつずつみていきましょう。
フラグ
フラグは、変換指定子の表示オプションみたいものです。
| フラグ | |
|---|---|
| - | フィールドの左寄せ | 
| + | 正の数値であれば数値の前に「+」を付加 | 
| 0 | フィールドの「0」埋め | 
最小フィールド幅.精度
最小フィールドは、出力の桁数です。桁数(文字数)を揃えたいときに利用します。「フラグ」の「0」などを合わせて利用します。
修飾子
修飾子は変換指定子の精度を修飾し、以下のようなものがあります。
| 修飾子 | |
|---|---|
| h | 精度を半分にします。short や signed | 
| l | 精度を倍にします。long や unsigned | 
[修飾子]変換指定子
[修飾子]変換指定子と変数の型の対応表です。
| [修飾子]変換指定子 | 変数の型 | 概要 | 
|---|---|---|
| %c | char | 文字 | 
| %s | char * | 文字列 | 
| %d | int | 10進整数 | 
| %hd | short int | 半分の精度の10進整数 | 
| %ld | long int | 倍精度の10進整数 | 
| %u | unsigned int | 符号なし10進整数 | 
| %hu | unsigned short int | 符号なし半分の精度の10進整数 | 
| %lu | unsigned long int | 符号なし倍精度の10進整数 | 
| %o | int | 8進整数 | 
| %x | int | 16進整数 | 
| %f | float | 実数 | 
| %lf | double | 倍精度の実数 | 
| %e | float | 実数の指数表示 | 
| %g | float | 実数の最適表示 | 
変換指定子の利用例
変換指定子の利用例をいくつか取り上げてみました。「 」は空白(半角スペース)を表します。
| 文字列 | ||
|---|---|---|
| %s | Hello! | |
| %8s | Hello! | |
| %.2s | He | |
| %8.2s | He | |
| 整数 | ||
| %d | 1234 | |
| %6d | 1234 | |
| %06d | 001234 | |
| 実数 | ||
| %f | 3.141593 | |
| %.3f | 3.14 | |
| %3.3f | 3.14 | |
利用例を実際に出力するプログラムです。
#include <stdio.h>
int main(void)
{
  /* 文字列 */
  printf("%s\n", "Hello!");
  printf("%8s\n", "Hello!");
  printf("%.2s\n", "Hello!");
  printf("%8.2s\n", "Hello!");
  /* 整数 */
  int a = 1234;
  printf("%d\n", a);
  printf("%6d\n", a);
  printf("%06d\n", a);
  /* 実数 */
  float b = 3.1415926535;
  printf("%f\n", b);
  printf("%.2f\n", b);
  printf("%3.2f\n", b);
}