1.
#include
int main() {
long y = -43456;
printf("y=%-8ld\n", y);
printf("y=%-08ld\n", y);
printf("y=%08ld\n", y);
printf("y=%+8ld\n", y);
return 0;
}
结果:
分析:格式说明:
“%-0mnl<转换字符>” , 后面的“-0mnl ”都可以省略!
分别表示:
%——格式说明开始标志
- ——指出按左对齐方式输出
0 ——数值型数据不使用的位是否填零
m——指出数据宽度(含小数点),若宽度不够,则按实际数据输出
n——对于实数,表示输出n位小数;对于字符串,表示截取的字符个数
l——是否按长整型数输出
转换字符——数据输出类型。
理论上应该输出y=-43456(这边补0就增大了数值了,所以不显示)
y=-0043456
2.
#include
int main() {
int y = 2456;
printf("y=%3o\n", y);
printf("y=%8o\n", y);
printf("y=%08ld\n", y);
printf("y=%#8o\n", y);
return 0;
}
运行jie'结果:
分析:%o表示按8进制输出数据
%3o表示输出宽度最小为3个字节的宽度,如果实际宽度超过3,则按实际输出。%8o表示输出宽度最小为8个字节的宽度;
对于%x,%o等特别的进制,当%后加#再接其它格式字符时,表示带格式输出。即在输出中,加上各自的进制标识。
其中,%x格式加#后,会在输出前加0x。而%o在加#后,会在输出前加0。