我正在运行这两个printf()
函数,并且对它们生成的输出有点困惑。
printf("%0.4f",3467);
它输出 - 3467.0000
。在第一个参数中,0.4f
4 被理解为它代表小数点后的 4 个零,但我不确定0
当我将它更改为 1、2、3 时它保持不变。那么它有什么作用呢?
printf("%1.6u\n", -32);
在运行这个时,我得到4294967264
这个数字到底指的是什么?
%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 位整数是 FFFFFFE0。如果您告诉 printf 将其输出为无符号,您将获得 FFFFFFE0 的无符号值,即 4294967264。