c语言初学者,请问f的输出为什么是568.000,我算了568.2,按程序f不是只有4个字符吗?答案有6个字符啊

#include<stdio.h>
int main()
{
int x=432;
float f=69.20;
char c;
c=f-2;
printf("%c,",c);
x+=f;
printf("%d,",x);
f=c+x;
printf ("%4.3f\n",f);
}

#include<stdio.h>
int main()
{
int x=432;
float f=69.20;
char c;
c=f-2;
printf("%c,",c);
x+=f; //x是整形,所以会舍去0.2, x=501
printf("%d,",x);
f=c+x; //501+67
printf ("%4.3f\n",f);
}

如果解决了您的问题请采纳!
如果未解决请继续追问

追问

%4.3f不是代表只有四个字符,其中三个是小数位吗?再问一下%2d代表的是只有两个字符吗?

追答

%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
%4.3f 表示输出场宽为4的浮点数, 其中小数位为3, 整数位为1,不够4位右对齐。若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-03-01
c=f-2;执行这条语句后c=67(因为c是字符型变量只能取整数(对应该整数的ASCII码为'C'))
x+=f;执行这条语句后x=501(先将x转化为float型与f相加,之后将结果转化为int赋给x)
f=c+x;执行这条语句后f=568
由于printf ("%4.3f\n",f);所以保留三位小数,所以结果为568.000追问

%4.3f不是代表只有四个字符,其中三个是小数位吗?再问一下%2d代表的是只有两个字符吗?

追答

http://www.360doc.com/content/09/0816/21/26398_4969316.shtml

第2个回答  2015-03-01
把输出中的.3去掉 因为.n就是四舍五入输出小数点后n个数 还有 你这明显错了 用char加减是不会输出数字的,而且char是整数 会强制把小数点后面的去掉
相似回答