「C言語」の版間の差分

提供: Wikinote
移動: 案内検索
(printf のフォーマット)
行14: 行14:
 
     f = 123.456;
 
     f = 123.456;
 
     printf("%f %f\n", f, -f);              // デフォルト
 
     printf("%f %f\n", f, -f);              // デフォルト
     printf("%.2f %.2f\n", f, -f);          // 小数点以下桁指定
+
     printf("%.2f %.2f\n", f, -f);          // 小数点以下桁 (精度) 指定
 
     printf("%10f %10f\n", f, -f);          // 最小幅指定
 
     printf("%10f %10f\n", f, -f);          // 最小幅指定
 
     printf("%10.2f %10.2f\n", f, -f);
 
     printf("%10.2f %10.2f\n", f, -f);
行22: 行22:
 
     printf("%*.2f %*.2f\n", 15, f, 15, -f); // 引数による幅指定
 
     printf("%*.2f %*.2f\n", 15, f, 15, -f); // 引数による幅指定
 
     printf("%*3$.2f %*3$.2f\n", f, -f, 20); // 引数による幅指定 (引数指定)
 
     printf("%*3$.2f %*3$.2f\n", f, -f, 20); // 引数による幅指定 (引数指定)
 +
    printf("%10.*3$f %.*3$f\n", f, -f, 10); // 引数による精度指定 (引数指定)
 
   
 
   
 
     return 0;
 
     return 0;
行38: 行39:
 
           123.46        -123.46
 
           123.46        -123.46
 
               123.46              -123.46
 
               123.46              -123.46
 +
123.4560012817 -123.4560012817

2009年2月3日 (火) 09:48時点における版

C 言語再考。

覚え書き

printf のフォーマット

% で始まり、変換指定子で終わる。以下のプログラムで実験。

#include <stdio.h>

int main(void) {
    float f;

    printf("1234567890 1234567890\n");
    printf("---------------------\n");
    f = 123.456;
    printf("%f %f\n", f, -f);               // デフォルト
    printf("%.2f %.2f\n", f, -f);           // 小数点以下桁 (精度) 指定
    printf("%10f %10f\n", f, -f);           // 最小幅指定
    printf("%10.2f %10.2f\n", f, -f);
    printf("%010.2f %010.2f\n", f, -f);     // 0 で埋める
    printf("%-10.2f %-10.2f\n", f, -f);     // 左揃え
    printf("%+10.2f %+10.2f\n", f, -f);     // 必ず符号をつける
    printf("%*.2f %*.2f\n", 15, f, 15, -f); // 引数による幅指定
    printf("%*3$.2f %*3$.2f\n", f, -f, 20); // 引数による幅指定 (引数指定)
    printf("%10.*3$f %.*3$f\n", f, -f, 10); // 引数による精度指定 (引数指定)

    return 0;
}

実行結果は下記のようになる。

$ gcc -o printf printf.c; ./printf
1234567890 1234567890
---------------------
123.456001 -123.456001
123.46 -123.46
123.456001 -123.456001
    123.46    -123.46
0000123.46 -000123.46
123.46     -123.46   
   +123.46    -123.46
         123.46         -123.46
              123.46              -123.46
123.4560012817 -123.4560012817