格式输出函数问题新手求助
看视频跟着写了下面的程序,有一些疑惑和自己猜的结论请各位帮帮忙#include <stdio.h>
void main()
{
int a=15;
float b=123.1234567;
double c=12345678.1234567;
char d='p';
printf("a=%d,%5.3d,%3o,%x\n",a,a,a,a);
printf("b=%f,%lf,%7.4f,%e\n",b,b,b,b);
printf("c=%lf,%f,%8.4f\n",c,c,c);
printf("d=%8c,%c\n",d,d);
}
疑问一:printf("a=%d,%5.3d,%3o,%x\n",a,a,a,a);中,为什么%5.3d运行出来是015?
疑问二:printf("a=%d,%5.3d,%3o,%x\n",a,a,a,a);中,%3o运行出来17前面有一段空格是3造成的,数字越大,空格越长这样理解对吗?
疑问三:printf("b=%f,%lf,%7.4f,%e\n",b,b,b,b);中,lf与f有区别吗,为什么运行出来结果一样?%7.4f运行出来是123.1235,和%f为什么不一样。
疑问四:printf("c=%lf,%f,%8.4f\n",c,c,c);中,c不是double吗,double有16为有效数字,为什么在运行出来时12345678.123457,只有13位有效数字。
新手刚入门,可能问的问题太过基础,请各位大佬不要嫌弃,万分感谢。 本帖最后由 风过无痕丶 于 2018-2-25 09:08 编辑
第一个问题:第一个问题不应该是015吧~ 前面至少有两个空格吧~5.3%长度为5~ 且最少位数为3位
第二个问题:%3o 3是宽度, o是按八进制输出~十进制的15转换成八进制 就是 17宽度为3 应该就是一个空格然后17
第三个问题: lf和f当然不一样样, lf double类型ffloat类型 还是上面的答案,理解了上面 这个就好理解了 %7.4f宽度为7位。小数点后面占四位
最后一个问题:为什么只显示了 13位, 因为 float 和 double 默认显示小数点后六位。 风过无痕丶 发表于 2018-2-24 10:52
第一个问题:第一个问题不应该是015吧~ 前面至少有两个两个空格吧~5.3%长度为5~ 且最少位数为3位, ...
明白了,非常感谢大佬的解答! zhangtiantian 发表于 2018-2-24 21:47
明白了,非常感谢大佬的解答!
觉得明白了~给个最佳啊~ 这个月回复最佳还是0~ 苦笑。。
页:
[1]