尝试另一个来自 KandR 的示例,我有以下 C 代码:
#include <stdio.h>
int main(){
double nc = 5;
printf("%*.0f",nc);
return 0;
}
这会打印 5,然后从左到右继续移动(打印空白字符),然后换行,直到按 Ctrl + C 停止)。当我将 printf
行更改为 printf("%.0f",nc)
它按预期工作,即它只打印 5 并停止。
根据 http://www.cplusplus.com/reference/cstdio/printf/ printf 的语法是:
%[flags][width][.precision][length] specifier.
我将 [width]
更改为 *
以便 printf
不会限制输出中的数字。
1) Why does it keep printing blank characters until stopped?
2) When I do not give any width, what does
printf
assume by default?3) I also modified the above code to set
nc = 500
, thenprintf
does not print anything except the continuous blank characters!
当我将它更改为 500.00 时,它会打印 500,之后它会一直打印空白字符,直到停止。为什么设置nc=500
没有输出,为什么设置nc=500.00
有输出?
最佳答案
格式说明符 "%*.0f"
需要两个参数:一个是宽度说明符,另一个是 double 说明符。因为你只传递一个,它调用 undefined behaviour 。
如果你更正它,例如:
printf("%*.0f",5, nc); // width 5
它会很好地工作。
关于c - printf 连续打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24223130/