我正在使用 C 语言处理格式化输出,并遇到了格式字符串
%5d%*.*f
。虽然我了解整数 %d
和浮点数 %f
的基本用法,但我特别寻求澄清:
%5d
%*.*f
(*)
中使用两个星号%*.*f
的目的是什么?printf
的参数交互?我使用的是符合 C11 标准的 C 编译器。
这是一个代码片段,说明了我对格式字符串的使用:
#include <stdio.h>
int main()
{
int val =10;
float val1 = 56.40;
printf("%d%*.*f", val,val,val-8,val1);
}
输出为 10 56.40
%5d%*.*f
的实际含义是什么
#include <stdio.h>
int main()
{
int val =10;
float val1 = 56.40;
printf("%d%f", val,val,val-8,val1);
}
输出为 100.000000
为什么输出会因为输出而变得不同
%d%f
?
%5d
表示打印 int
,最小字段宽度为 5。该值不是 5 个字符宽,它将用空格填充。您要么无法分辨,要么您没有粘贴示例输出中的空格。
%*.*f
表示打印 float
,其最小字段宽度和精度(.
之后的数字)作为参数提供,如 *
所示。在这种情况下,字段宽度为 val
,精度为 val-8
。
您的第二个代码示例根本就是不正确的用法。您声称传递一个 int 和 float,但却传递了 3 个 int 和一个 float。