<h23 -9. フラグ
◆フラグ
フラグについて:
フラグはフィールド内での表示を設定します。
◇+と-と空白
+(プラス)
プログラム:
#include<stdio.h> main() { printf("%+3d\n",333); }
結果:
+333
この+は符号を常に出力するフラグです。もちろん-も出力されます。
-(マイナス)
プログラム:
#include<stdio.h> main() { printf("%-10d\n",333); printf("%+10d\n",333); }
結果:
333
+333
-はフィールド内を左から出力するフラグです。もちろんフィールド幅の値を出力文字数よりも多くしないと意味がありません。
(空白)
空白はあらかじめ符号の部分のスペースを確保してくれます。+と一緒に指定されたときは、+が優先され(空白)は無効になります。
プログラム:
#include<stdio.h> main() { printf("% d\n",333); printf("% d\n",-333); }
結果:
333
-333
◇#
#は変換指定子によって働きが違うので、1つ1つ説明します。
o :出力される8進数の頭に0を付加します。(0以外)
x,X :出力される16進数の頭に0x,0Xを付加します。(0以外)
f,e,g,F,E,G:常に小数点を表示
g,G:小数点以下の0を出力
プログラム:
#include<stdio.h> main() { printf("%#o\n",333); printf("%#x\n",333); printf("%#.0f\n",333.3); printf("%#.0e\n",333.3); printf("%#.0g\n",333.3); printf("%#g\n",333.3); }
結果:
0515
0x14d
333.
3.e+002
3.e+002
333.300
◇0
0は出力文字の左側の空白を0で埋めます。ただし-が指定されていると無視されてしまいます。また整数型で精度が指定されているときも無視されます。
もちろんフィールド幅は指定しないと意味がありません。
プログラム:
#include<stdio.h> main() { printf("%010d\n",333); printf("%10d\n",333); }
結果:
0000000333
333