关于 printf() 的方式和内容的说明;是?

clarification about how and what printf(); is?

这个问题与c编程有关。

 /* program starts here.*/
 main()
 {
 float n=792.099976;
 printf("%f",n);      /*output:-792.099976*/
 printf("%5.2f",n);   /*output:-792.10*/
 printf("%6.2f",n);   /*output:-792.10*/
 printf("%6.1f",n);   /*output:- 792.1*/
 printf("%7.1f",n);   /*output:-  792.1*/
 printf("%3.1f",n);   /*output:-792.1*/
 }
 /Program Ends here/

为什么会出现这种变化?

根据我看的书,("%5.2f",n)表示5位小数点后2位。

但是当我将 '5.2' 替换为 '6.2' 时,为什么我得到相同的答案?

但是当我用 '6.1' 替换 '5.2' 时,为什么我在它前面得到 space?

但是当我将 '5.2' 替换为 '7.1' 时,为什么前面有两个 space?

但是当我将“5.2”替换为“3.1”时,为什么我得到的答案与“5.2”相同?

https://drive.google.com/file/d/0Bxb7Vv5kgAB5VF9PN2hkaVdOY3c/view?usp=sharing

Link 在这里,我无法上传图片,因为它说我至少需要 10 个声望。

查看 printf 手册页了解所有详细信息,但基本上,您误解了格式说明符中第一个数字的作用。第一个数字是 最小值 字段宽度(以字符为单位)。如果正在打印的数字少于此字符数(不是数字,所以小数点和符号计数!),它将用 space 填充以填充这么多字符。

因此,当您使用“5.2”或“6.2”时,数字使用 6 个字符,因此不会进行填充。对于“7.2”,添加了一个 space 填充字符。对于'6.1'或'7.1',数字是5个字符,因此添加一两个space填充。