鱼C论坛

 找回密码
 立即注册
查看: 3334|回复: 3

格式输出函数问题新手求助

[复制链接]
发表于 2018-2-24 10:20:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看视频跟着写了下面的程序,有一些疑惑和自己猜的结论请各位帮帮忙
#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位有效数字。
新手刚入门,可能问的问题太过基础,请各位大佬不要嫌弃,万分感谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-24 10:52:12 | 显示全部楼层
本帖最后由 风过无痕丶 于 2018-2-25 09:08 编辑

第一个问题:  第一个问题不应该是015吧~ 前面至少有两个空格吧~  5.3%  长度为5~   且最少位数为3位

第二个问题:%3o   3是宽度, o是按八进制输出~  十进制的15转换成八进制 就是 17  宽度为3 应该就是  一个空格然后17

第三个问题: lf和f当然不一样样, lf double类型  f  float类型    还是上面的答案,理解了上面 这个就好理解了 %7.4f  宽度为7位。小数点后面占四位

最后一个问题:  为什么只显示了 13位, 因为 float 和 double 默认显示小数点后六位。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-2-24 21:47:59 | 显示全部楼层
风过无痕丶 发表于 2018-2-24 10:52
第一个问题:  第一个问题不应该是015吧~ 前面至少有两个两个空格吧~  5.3%  长度为5~   且最少位数为3位, ...

明白了,非常感谢大佬的解答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-25 09:09:54 | 显示全部楼层
zhangtiantian 发表于 2018-2-24 21:47
明白了,非常感谢大佬的解答!

觉得明白了~给个最佳啊~ 这个月回复最佳还是0~ 苦笑。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-29 09:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表