c中的%*d是什么?
我遇到了一个代码:c中的%*d是什么?,c,format-specifiers,C,Format Specifiers,我遇到了一个代码: #include<stdio.h> int main(){ int n=5; printf("\nn=%*d",n,n); return 0; } #包括 int main(){ int n=5; printf(“\nn=%*d”,n,n); 返回0; } 它输出:n=5。我知道%*d允许两个参数并返回字段宽度。但是,我尝试将n的值更改为9。但输出的格式相同(即n=9)。此外,我不能100%确定我是否正确理解%*d和字段宽度 因此,我的
#include<stdio.h>
int main(){
int n=5;
printf("\nn=%*d",n,n);
return 0;
}
#包括
int main(){
int n=5;
printf(“\nn=%*d”,n,n);
返回0;
}
它输出:n=5
。我知道%*d
允许两个参数并返回字段宽度。但是,我尝试将n
的值更改为9
。但输出的格式相同(即n=9
)。此外,我不能100%确定我是否正确理解%*d
和字段宽度
因此,我的问题是,%*d
和C中的字段宽度是多少
谢谢
编辑:
好的,谢谢大家。我现在明白了,是我的编译器将空格组合成一个空格 它打印长度为n的n
printf("\nn=%*d",n,n);
星星代表:
宽度不是在格式字符串中指定的,而是作为附加值指定的
必须为的参数前面的整数值参数
格式化
来源:如果您阅读,例如,您将看到
指定最小字段宽度的整数值或*。如果需要,结果将用空格字符填充(默认情况下),右对齐时填充在左侧,左对齐时填充在右侧。在使用*的情况下,宽度由int类型的附加参数指定。如果参数值为负值,则结果为指定的-标志和正字段宽度
因此星号告诉printf
从参数中获取字段宽度。由于在您的示例中n
是5
,因此输出将是四个空格和数字5
,总共有五个字符宽
如果在联机编译器中执行此操作,请记住,web浏览器不会在文本中显示所有空格,除非在
块中,或者如果它们是不间断空格(如
)
n= 9Press any key to continue...
我建议您在自己计算机上的文本控制台中执行此操作,或者尝试另一个在线编译器,以正确格式化输出。使用9:
n= 5Press any key to continue...
使用5:
那个在线编译器将所有空间合并成一个
使用更好的:
5:
9:所有答案以及您的理解都是正确的。它会调整字段宽度 我将尝试在这里回答为什么你没有在你正在使用的语言中看到它
它实际上会按照您的代码打印9或5个空格。然而,它是HTML,它将多个空格压缩为单个空格。如果要查看确切的输出,请检查“输出”面板页面的HTML源代码。请看这里:使用9可以提供更多空间。@self。我使用代码`#include int main(){int n=9;printf(“\nn=%*d”,n,n);return 0;}`得到的输出是
n=9
。好的,我使用了另一个编译器,得到了您所说的结果。谢谢顺便说一句,在这个答案中,你把o/p换成5和9了吗?@GaurangTandon Yeah:),我正在进行多任务处理。嗯*在格式字符串中,指定最小字段宽度…比如说,如果我给n=6541,字段=4,那么使用printf(“%*d”,field,n)…将打印6541,而不需要任何额外的空格。但是在你的例子中,取n=9,它需要1个空间,所以剩余的8个空间将被添加。