MENU

【保存用】printfのフォーマット指定子一覧と使用例

目次

フォーマット指定子一覧

基本的なフォーマット指定子

整数型

  • %d または %i: 符号付き10進数(int)
  • %u: 符号なし10進数(unsigned int)
  • %o: 符号なし8進数(unsigned int)
  • %x: 符号なし16進数(小文字)(unsigned int)
  • %X: 符号なし16進数(大文字)(unsigned int)

浮動小数点型

  • %f: 10進数形式の浮動小数点数(floatまたはdouble)
  • %e または %E: 指数形式の浮動小数点数(小文字eまたは大文字Eを使用)
  • %g または %G: 10進数形式または指数形式(より短い方を選択)

文字および文字列型

  • %c: 文字(char)
  • %s: 文字列(char配列)

ポインタ型

  • %p: ポインタのアドレス(void*)

その他

  • %%: パーセント記号(%)

拡張フォーマット指定子

長さ修飾子

  • %ld, %li: 符号付き10進数(long int)
  • %lu: 符号なし10進数(unsigned long int)
  • %lld, %lli: 符号付き10進数(long long int)
  • %llu: 符号なし10進数(unsigned long long int)
  • %hd: 符号付き10進数(short int)
  • %hu: 符号なし10進数(unsigned short int)

精度および幅指定子

  • m: 最小フィールド幅
  • .n: 小数点以下の桁数(浮動小数点数の場合)、または最大文字数(文字列の場合)

フラグ

  • -: 左寄せ(デフォルトは右寄せ)
  • +: 常に符号を表示(正数の場合は+、負数の場合は-)
  • (空白): 正数の符号としてスペースを表示(負数の場合は-)
  • 0: 左側をゼロで埋める
  • #: 特定のフォーマット指定子に対してオプションの形式を使用(例えば、%#x0xプレフィックス付きの16進数)

使用例

#include <stdio.h>

int main() {
    // 整数型
    int num = -123;
    unsigned int unum = 123;
    unsigned int onum = 123;
    unsigned int xnum = 123;

    // 浮動小数点型
    float fnum = 123.456;
    double dnum = 123.456789;
    
    // 文字および文字列型
    char ch = 'A';
    char str[] = "Hello, World!";
    
    // ポインタ型
    void *ptr = #

    printf("符号付き10進数: %d\n", num);             // %d
    printf("符号なし10進数: %u\n", unum);             // %u
    printf("符号なし8進数: %o\n", onum);              // %o
    printf("符号なし16進数(小文字): %x\n", xnum);  // %x
    printf("符号なし16進数(大文字): %X\n", xnum);  // %X
    printf("浮動小数点数: %f\n", fnum);               // %f
    printf("指数形式(小文字): %e\n", dnum);        // %e
    printf("指数形式(大文字): %E\n", dnum);        // %E
    printf("短縮形式(小文字): %g\n", dnum);        // %g
    printf("短縮形式(大文字): %G\n", dnum);        // %G
    printf("文字: %c\n", ch);                          // %c
    printf("文字列: %s\n", str);                       // %s
    printf("ポインタ: %p\n", ptr);                     // %p
    printf("パーセント記号: %%\n");                   // %%
    
    // 長さ修飾子
    long int lnum = 1234567890L;
    long long int llnum = 1234567890123456789LL;
    short int snum = 123;

    printf("長い符号付き10進数: %ld\n", lnum);       // %ld
    printf("非常に長い符号付き10進数: %lld\n", llnum); // %lld
    printf("短い符号付き10進数: %hd\n", snum);       // %hd
    
    // 幅と精度
    printf("幅10: %10d\n", num);                       // %10d
    printf("幅10小数点以下2桁: %10.2f\n", fnum);      // %10.2f
    printf("左寄せ幅10: %-10d\n", num);               // %-10d
    printf("ゼロ埋め幅10: %010d\n", num);             // %010d

    return 0;
}

以下が実行結果です。

符号付き10進数: -123
符号なし10進数: 123
符号なし8進数: 173
符号なし16進数(小文字): 7b
符号なし16進数(大文字): 7B
浮動小数点数: 123.456001
指数形式(小文字): 1.234568e+02
指数形式(大文字): 1.234568E+02
短縮形式(小文字): 123.457
短縮形式(大文字): 123.457
文字: A
文字列: Hello, World!
ポインタ: 0x7ffd7da88c44
パーセント記号: %
長い符号付き10進数: 1234567890
非常に長い符号付き10進数: 1234567890123456789
短い符号付き10進数: 123
幅10:       -123
幅10小数点以下2桁:     123.46
左寄せ幅10: -123      
ゼロ埋め幅10: -000000123
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

20代の組み込みソフトウェアエンジニア
主な使用言語はC++

---------------------資格---------------------
応用情報技術者
ネットワークスペシャリスト

目次