printfと変数の型
〜出力文字列(変換文字)
(準備中)
Printfは標準出力(stdout)への出力関数です。一般的に標準出力はデフォルトでディスプレイ
になっています。
Printfの出力文字列には制御文字や変換文字を含むことができます。=書式付文字列
書式のまとめ
制御文字
\n 改行
\t タブ \b バックスペース \" "を表示
\\ \を表示 \r キャリlリジリターン \0 ヌル文字
変換文字
変換文字の先頭には%を付けます。
その後ろには以下のような変換文字を付けます。
d 整数型。10進数
x 整数型。16進数
o 整数型。8進数
u 符号なし整数。10進数
c 文字
s 文字列(ただしnull=00は出力しない)
e 実数型 float型でもdouble型でもいい ±n.nnE±mm の形式で出力
f 実数型 float型でもdouble型でもいい ±n.nnの形式で出力
g 実数型 float型でもdouble型でもいい。%fと%eのうちフィールド幅の短い方の形式で自動的に表示する。
変換指示は更に細かく指示することができます。
数字で出力桁数を指定する。 %5d とすると整数型を5ケタで出力します。
-をつけると左詰めの表示をする。 %-5d 左詰で5ケタの出力
0をつけるとゼロでパディングする。 %05d 先頭を0でパディングし5ケタ出力
n.mf 実数値でフィールド幅と小数点以下のケタ数を指定 %8.2f 8桁の出力で小数点以下は2ケタ
l 倍長整数long型の表示 %9ld
#include <stdio.h>
int main(void){
int a;
a=1234;
printf("%d\n",a);
printf("%8d\n",a);
printf("%-8d\n",a);
printf("%08d\n",a);
printf("16進数 %x\n",a);
return 0;
}
実行例
c:\bcc55\Bin>printf
1234
1234
1234
00001234
16進数 4d2
printfのフォーマット文と変数の宣言の型の不一致で期待通りの出力(標準出力)が
得られない、うっかりミス
#include <stdio.h>
int main(void){
int x[5]={2,4,3,9,5};
int i,sum,heikin,iave;
float ave, fheikin;
sum=0;
for (i=0; i<5; i++) {
sum=sum+x[i];
}
ave=sum/9.0;
heikin=sum/9.0;
printf("average %f\n",ave);
printf("average %d\n", ave);
printf("heikin %d\n", heikin);
printf("heikin %f\n", heikin);
printf("cast\n");
iave=(int)ave;
fheikin=(float)heikin;
printf("average %d\n", iave);
printf("heikin %f\n", fheikin);
return 0;
}
c:\bcc55\Bin>ave
average 2.555556
average 536870912
heikin 2
heikin 0.000000
cast
average 2
heikin 2.000000
c:\bcc55\Bin>
castについて