我正在运行这两个printf()
函数,并且与它们生成的输出有点混淆。
答案 0 :(得分:2)
%in 0.4f是格式化值时输出的最小长度。在你的情况下你不会看到输出的任何差异,除非你把它改为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。