关于如何和什么printf()的澄清;是?

时间:2015-10-04 17:14:17

标签: c printf

这个问题与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)表示带有2个小数点的5位数。

但是当我更换' 5.2'与' 6.2' ,为什么我会得到相同的答案?

但是当我更换' 5.2'用' 6.1'为什么我要在它前面留出空间?

但是当我更换' 5.2'用' 7.1' ,为什么我前面有两个空格?

但是当我更换' 5.2'用' 3.1' ,为什么我得到相同的答案' 5.2'?

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

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

1 个答案:

答案 0 :(得分:1)

有关所有详细信息,请参阅printf手册页,但基本上,您误解了foramt说明符中的第一个数字。第一个数字是最小字段宽度(以字符为单位)。如果打印的数字少于此数字(不是数字,所以小数点和符号数!),它将用空格填充以填充这些字符。

所以当你使用' 5.2'或者' 6.2',数字使用6个字符,因此不进行填充。使用' 7.2'添加了一个空格填充字符。使用' 6.1'或者' 7.1',数字是5个字符,因此添加了一个或两个填充空格。