C语言%.4f与%3f代表是什么意思?

#include<stdio.h>
void main()
{
float x=67.8564,y=-789.124;
printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);
}

输出结果

67.86, -789.12,67.8564,-789.1240,67.856400,-789.124023

前两个没疑问,第三四个和我预想结果相同可为什么谭老的书给的答案是

还有第五个和第六个,为什么是这个输出结果,是因为%3f的3无效吗?

C语言%.4f代表输出小数位为4的浮点数。%3f代表输出场宽为3的浮点数。

格式占位符(%)是在C/C++语言中格式输入函数,如scanf、printf等函数中使用。其意义就是起到格式占位的意思,表示在该位置有输入或者输出。其中,%f,%F,%e,%E,%g,%G 用来输入输出实数,可以用小数形式或指数形式输入输出。

可以在“%”和字母之间插进数字表示最大场宽。如:%9.2f表示输出场宽为9的浮点数,其中小数位为2,整数位为6。

对浮点数,若整数部分位数超过了说明的整数位宽度,将按实际整数位输出;若小数部分位数超过了说明的小数位宽度,则按说明的宽度以四舍五入输出。

扩展资料:

相关的格式占位符:

%a,%A 读入一个浮点值(仅C99有效)

%c 读入一个字符

%d 读入十进制整数

%i 读入十进制,八进制,十六进制整数

%o 读入八进制整数

%x,%X 读入十六进制整数

%s 读入一个字符串,遇空格、制表符或换行符结束。

%f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。

%p 读入一个指针

%u 读入一个无符号十进制整数

%n 至此已读入值的等价字符数

%[] 扫描字符集合

%% 读%符号

参考资料来源:百度百科-格式占位符

参考资料来源:百度百科-printf()

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
以%8.2f为例整数8表示宽度为8,也就是8个字符,而.2表示精度为2,也就是小数点后有2位
还有说一下,谭浩强书实在太坑,不建议学他的书本回答被网友采纳
第2个回答  2014-01-20
.代表小数点后的位数,3代表总的位数
第3个回答  2018-04-09
第一个问题:第三第四个老谭的书错了,你理解没问题;

第二个问题:第五第六个是因为%3f的3表示:打印的浮点数“至少”占3个字符宽度,这里大于3个,自然就是无效咯。至于为什么小数点后6位小数,这是单精度浮点数精度决定的。
第4个回答  2014-01-20
%3f 和%3.f是不同的,%3f相当于%f(3是无效的)
%3.f表示宽度为3本回答被提问者采纳
相似回答