浮点参数和-ve number在php的printf函数中起什么作用

浮点参数和-ve number在php的printf函数中起什么作用,php,numbers,printf,Php,Numbers,Printf,我正在运行这两个printf()函数,对它们生成的输出有点混淆 printf(“%0.4f”,3467) 它输出-3467.0000。在第一个参数中,0.4f4表示小数点后的4个零,但我不确定0,因为我将其更改为1,2,3,它保持不变。那么它有什么作用呢 printf(“%1.6u\n”,-32) 在运行此程序时,我得到了4294967264这个数字究竟指的是什么 在询问之前,我检查了用于参数查找的链接whick,但找不到相关内容。0%0.4f中的0是格式化值时输出的最小长度。在您的情况下,除非

我正在运行这两个
printf()
函数,对它们生成的输出有点混淆

  • printf(“%0.4f”,3467)
  • 它输出-
    3467.0000
    。在第一个参数中,
    0.4f
    4表示小数点后的4个零,但我不确定
    0
    ,因为我将其更改为1,2,3,它保持不变。那么它有什么作用呢

  • printf(“%1.6u\n”,-32)
  • 在运行此程序时,我得到了
    4294967264
    这个数字究竟指的是什么


    在询问之前,我检查了用于参数查找的链接whick,但找不到相关内容。

    0%0.4f中的0是格式化值时输出的最小长度。在您的情况下,除非将其更改为10或更高,否则您将不会看到输出中的任何差异,因为这样的输出将始终为3467.0000。如果将0更改为15,则格式化输出前会出现一个空白:

    printf("%15.4f", 3467);
          3467.0000
    |        |    |
    1       10    5
    
    在浏览器中,您将看不到多余的空格,但如果您另外告诉它使用点作为填充字符,您将看到:

    printf("%'.15.4f", 3467);
    ......3467.0000
    |        |    |
    1       10    5
    

    至于你的第二个问题。您正在将有符号值格式化为无符号输出-32,因为无符号32位整数是FFFFFF E0。如果您告诉printf将其输出为unsigned,您将得到ffffff e0的unsigned值,即4294967264。

    %u
    用于打印无符号整数,您传入了一个有符号整数。垃圾输入=垃圾输出<代码>%0.4f
    表示“一个浮点数,小数点后四位,结果字符串长度必须至少为0个字符,必要时用空格填充”。如果将其更改为
    %9.4f
    %09.4f
    ,您将看到其他结果。请看“宽度说明符”和格式说明符上方的
    sprintf
    页面上描述的其他项目。@dcorder我认为这不是一个垃圾值,因为我在代码板上测试了它,它返回了相同的ouptup@dcorder,我执行了这段代码,但没有效果。.firebug也检查了是否添加了一些额外的空间,但没有,它不是printf(“%13.4f”,3467);我做了printf(“%133.4f”,3467);但是第二个答案没有空格(也没有安装firebugged)+1:)对不起,没有意识到在那里看不到附加空格。请注意printf的输出(“%1.6u”,-32)取决于PHP的大小在你的情况下,它似乎是4。这一切都很好。你真的拥有非常深刻的PHP知识。必须说:)