C语言字段宽度的问题,有点混乱

家丁下面是某个完整程序的一部分,打印的结果是什么?

printf("He sold the painting for $%2.2f.\n",2.345e2);

上面打印的格式是%2.2f 不就是字段宽度为2,小数点后保留两位吗?

打印出来应该是23.45吗?
但是答案给的是234.50,。
还有一道。。。
你会使用什么转换说明来打印
一个形如+3.13字段宽度等于数字中字符个数的浮点数。
我认为:
数字中有5个字符,小数点后有2位。那应该是%+5.2f吧。。。。
但是答案给的
%+0.2f

真搞混乱了。。。求大家帮忙解答一下,最好有详细的分析过程!

理解它不难,首先要知道:%符号/空白m.nf(f可以换成lf).这种域宽是对实型数据进行控制的。上边m,n要为正整数。m为数据的总宽度,n为小数点后只保留的位数(要四舍五入的)不足的补零。分析:当m的大小小于实际数据的长度时,m不会起作用,本题中2.345e2(为实型常量原数为234.5)m为2,但是数据的长度明显大于2,所以以处的2没有作用;后面的n为2,就表示小数点后只保留两位,即234.5变为234.50(不足位的要用零补充,多的要用四舍五入进行处理)。输出最后结果为234.50。
%+0.2f:上面出现的符号/空白表示是否要输入相应的符号位。重点在于0.2的理解,题目中重点考虑的是小数的后的位数,而不是整个数的长度。我们为了方便控制数据的显示方式时,就用0去代替原来的长度了,就不用我们人去一位位去数了,如果我们不开始不知道原数据的长度时,我们不好去猜测,所以只好用0来表示。
温馨提示:答案为网友推荐,仅供参考
相似回答