Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c中的%*d是什么?_C_Format Specifiers - Fatal编程技术网

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个空间将被添加。