Printfパラメータの詳細


printf()関数
役割:端末にいくつかの任意のタイプのデータを出力する(putcharは文字しか出力できず、1文字しか出力できないがprintfは
複数のデータを出力し、任意のタイプ)
一、printf()の一般フォーマット
printf(フォーマット制御、出力リスト);
例:
int i = 3;
double f = 4.56;
printf("i = %d, f = %f/n", i,f);
printf()は関数で、「フォーマット制御」と「出力リスト」はそのパラメータです.printf(パラメータ1,パラメータ2,パラメータ3,...,パラメータn);ここで、「パラメータ1」は「フォーマット制御」を表す.残りのパラメータは「出力リスト」を表します.
二、書式文字
    1、d   :        。

%d
出力数値長が変数数値の実際の長さ
%md
m出力データの幅を指定します.データ自体の実際の幅がmより小さい場合、データの左端にスペースを補う.mより大きい場合は、データの実際の桁数で出力します.
%ld,%mld
l(小文字L)は「ロングフォーム」データの出力を示す
%0md,%0mld
0(数字0)は桁数がm未満の場合に0を補う
注意:%の後のm(桁数制御)、0(桁数が0未満)は、他のフォーマットにも適用されます.
  :(□    )

int i = 123;
long j = 123456;
printf("%d□5d□05d,□ld□8ld□08ld",i,i,i,j,j,j);
123□□□123□00123,□123456□□□123456□00123456
   2、o(  )   :          。(        )
 3、x   :           。(        )
   4、u   :         unsigned   。
 [ 3.2]

main()
{
unsigned int a = 65535;
 
int b = -2;
 
printf("a=%d,%o,%x,%u/n",a,a,a,a);
 
printf("a=%d,%o,%x,%u/n",b,b,b,b);
}
 
a=-1,177777,ffff,65535
b=-2,177776,fffe,65534
  5、c   :        。    ,   0~255              
   
  :

char c;
printf("%c",c);
1つの整数は、その値が0~255の範囲内であれば、文字形式で出力してもよく、出力前に、その整数を対応するASCII文字に変換する.逆に、1文字のデータを整数で出力することもできます.
  [ 3.3]

main()
{
char c = 'a';
 
int i = 97;
 
printf("%c,%d/n",c,c);
 
printf("%c,%d/n",i,i);
}
 
実行結果:
 
a,97
 
a,97
  6、s   :         。

%s
二重引用符を含まない文字列を出力するために使用されます.例:printf("%s","CHINA");
%ms
m指定幅(文字列長がm未満の場合は左スペース、大きい場合は実際の幅で出力)
%-ms
左揃え、m未満の場合は右スペース
%m.ns
出力はm列を占め、文字列の左端のn文字のみをとる.このn各文字はm列の右側に出力し、左にスペースを補う.
%-m.ns
上、右にスペースを追加
  7、f   :       。

%f
整数部は全て表示する、小数部は6ビット表示する.すべての数字が有効な数字であるわけではありません
%m.nf
指定データの幅は、nビットの小数点以下のm列である.値の長さがmより小さい場合は、左側にスペースを埋めます.
%-m.nf
%m.fと同様に、右側にスペースを追加する必要があります.
 [ 3.5]

main()
{
float x, y;
 
x = 111111.111; y = 222222.222;
 
printf("%f", x+y);
}
 
プログラム出力:
 
333333.328152(実数演算では誤差が避けられない)
  [ 3.6]

main()
{
double x,y; double x2,y2;
 
x = 1111111111111.111111111;y = 2222222222222.222222222;
 
x2= 1111111111111.111; y2= 2222222222222.222;
 
printf("%f %f", x+y, x2+y2);/* 13ビット整数、9ビット小数*/
}
 
プログラム出力:
 
333333333333.3330103333333333333333.333010(同じ)
     [ 3.6] [ 3.7]    :
   (1)           。
   (2)double( 3.7) float( 3.6)   。
   (3)float  (   )      7 ,double  (   )
          16 ,                。
  [ 3.7]

main()
{
 
 
float f = 123.456;
 
printf("%f□□%10f□□%10.2f□□%.2f□□%-10.2f",f,f,f,f,f);
}
 
出力結果:
 
123.455994□□123.455994□□□□□□123.46□□123.46□□123.46
  8、e   :         。

%e
正規化指数形式で実数を出力し、システムは自動的に6桁の小数を与え、指数部分は5桁を占める.
%m.ne
前の叙述と同じ
%-m.ne
前の叙述と同じ
  9、g   :         ,    f   e      ,          0.
    
    % printf()      ,        %,             %。
   :

 printf("%f%%", 1.0/3)
出力:0.33333%.