试行从KandR另一示例中,我有以下的C代码:printf的连续打印
#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语法是:[精度]
%[标志] [宽度] [长度]说明符。
我改变了[width]
到*
使printf
不限制输出数字。
1)为什么它会一直打印空白字符直到停止?
2)当我没有给出任何宽度时,
printf
默认情况下会是什么?3)我也修改了上面的代码来设置
nc = 500
,然后printf
不会打印任何东西,除了连续的空白字符!
当我将其更改为500.00时,它将打印500,之后它会一直打印空白字符直到停止。为什么当我设置nc=500
时没有输出,为什么当我设置nc=500.00
时有输出?
星号会导致printf从参数中读取宽度。试试'printf(“%*。0f”,10,nc)'。 – ooga