鱼C论坛

 找回密码
 立即注册
查看: 2185|回复: 5

[已解决]对于这个结果感觉很茫然求广大朋友帮忙分析一下结果的由来

[复制链接]
发表于 2017-10-26 01:26:41 | 显示全部楼层 |阅读模式

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

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

x
谢谢
最佳答案
2017-10-26 11:21:57

printf("a=%d,%5d,%o,%x\n",a,a,a,a);
%d:直接打印a的值 为15
%5d,输出长度为5的值   15(15只有2位,所以前面需要补3个空格)
%o,输出八进制数据17(1*8+7=15)
%x, 输出十六进制数据f (16进制的F为10进制数的15)

printf("b=%f,%lf,%8.4lf,%e\n",b,b,b,b);
%f, 输出浮点型数据123.123459 (精度受损)
%lf, 输出长浮点型数据123.123459(精度受损)
%8.4lf,格式化输出长浮点型数据,小数点前最大保留8位(正数小于8位不变),小数点后保存4位,所以为123.1235(精度受损)
%e, 科学计数型数据为1.231235*10*10, 所以为1.231235e+02

printf("c=%lf,%f,%8.4lf\n",c,c,c);
%lf, 输出长浮点型数据12345678.123457 (精度受损)
%f, 输出浮点型数据12345678.123457 (精度受损)
%8.4lf, 格式化输出长浮点型数据,小数点前最大保留8位(正数小于8位不变),小数点后保存4位, 所以输出12345678.1235

printf("d=%c,%8c\n",d,d);
%c, 输出字符型数据为p
%8c, 输出长度为8的字符型数据        p(p只有1位,所以前面需要补7个空格)
屏幕快照 2017-10-25 19.17.20.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-10-26 01:28:50 | 显示全部楼层

#include<stdio.h>
int main()
{
    int a=15;
    float b=123.1234567;
    double c=12345678.1234567;
    char d='p';
    printf("a=%d,%5d,%o,%x\n",a,a,a,a);
    printf("b=%f,%lf,%8.4lf,%e\n",b,b,b,b);
    printf("c=%lf,%f,%8.4lf\n",c,c,c);
    printf("d=%c,%8c\n",d,d);
    return 0;
}




结果:a=15,   15,17,f
b=123.123459,123.123459,123.1235,1.231235e+02
c=12345678.123457,12345678.123457,12345678.1235
d=p,       p
Program ended with exit code: 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-26 09:13:12 | 显示全部楼层
请查阅小甲鱼老师的文档,关于printf函数的格式化输出:
http://bbs.fishc.com/forum.php?m ... peid%26typeid%3D583
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-26 11:21:03 | 显示全部楼层

printf("a=%d,%5d,%o,%x\n",a,a,a,a);
%d:直接打印a的值 为15
%5d,输出长度为5的值   15(15只有2位,所以前面需要补3个空格)
%o,输出八进制数据17(1*8+7=15)
%x, 输出十六进制数据f (16进制的F为10进制数的15)

printf("b=%f,%lf,%8.4lf,%e\n",b,b,b,b);
%f, 输出浮点型数据123.123459 (精度受损)
%lf, 输出长浮点型数据123.123459(精度受损)
%8.4lf,格式化输出长浮点型数据,小数点前最大保留8位(正数小于8位不变),小数点后保存4位,所以为123.1235(精度受损)
%e, 科学计数型数据为1.231235*10*10, 所以为1.231235e+02

printf("c=%lf,%f,%8.4lf\n",c,c,c);
%lf, 输出长浮点型数据12345678.123457 (精度受损)
%f, 输出浮点型数据12345678.123457 (精度受损)
%8.4lf, 格式化输出长浮点型数据,小数点前最大保留8位(正数小于8位不变),小数点后保存4位, 所以输出12345678.1235

printf("d=%c,%8c\n",d,d);
%c, 输出字符型数据为p
%8c, 输出长度为8的字符型数据        p(p只有1位,所以前面需要补7个空格)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-26 11:21:57 | 显示全部楼层    本楼为最佳答案   

printf("a=%d,%5d,%o,%x\n",a,a,a,a);
%d:直接打印a的值 为15
%5d,输出长度为5的值   15(15只有2位,所以前面需要补3个空格)
%o,输出八进制数据17(1*8+7=15)
%x, 输出十六进制数据f (16进制的F为10进制数的15)

printf("b=%f,%lf,%8.4lf,%e\n",b,b,b,b);
%f, 输出浮点型数据123.123459 (精度受损)
%lf, 输出长浮点型数据123.123459(精度受损)
%8.4lf,格式化输出长浮点型数据,小数点前最大保留8位(正数小于8位不变),小数点后保存4位,所以为123.1235(精度受损)
%e, 科学计数型数据为1.231235*10*10, 所以为1.231235e+02

printf("c=%lf,%f,%8.4lf\n",c,c,c);
%lf, 输出长浮点型数据12345678.123457 (精度受损)
%f, 输出浮点型数据12345678.123457 (精度受损)
%8.4lf, 格式化输出长浮点型数据,小数点前最大保留8位(正数小于8位不变),小数点后保存4位, 所以输出12345678.1235

printf("d=%c,%8c\n",d,d);
%c, 输出字符型数据为p
%8c, 输出长度为8的字符型数据        p(p只有1位,所以前面需要补7个空格)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-26 23:13:06 From FishC Mobile | 显示全部楼层
BngThea 发表于 2017-10-26 09:13
请查阅小甲鱼老师的文档,关于printf函数的格式化输出:
http://bbs.fishc.com/forum.php?mod=viewthread& ...

谢谢呦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-28 18:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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