有关printf对齐

发布时间 2023-07-21 19:29:24作者: klpsn

要实现无论第一个变量有多长,第二个变量都是对齐的效果,您可以使用 printf 的字段宽度来控制输出。在输出第一个变量后,使用字段宽度对第二个变量进行对齐,使得第二个变量始终在同一列上输出。

以下是一个示例代码,演示如何实现这种效果:

#include <stdio.h>

int main() {
    int var1 = 42;
    long var2 = 1234567890;

    printf("%-15s 0x%016lx\n", "rax", (unsigned long)var1);
    printf("%-15s 0x%016lx\n", "rbx", (unsigned long)var2);

    return 0;
}

运行上述代码,会输出:

rax             0x000000000000002a
rbx             0x0000000046856342

在这个例子中,我们在 printf 中使用字段宽度来对齐输出。%-15s 表示字符串左对齐,并占用 15 个字符的宽度;0x%016lx 表示输出一个 16 位的十六进制数,并且使用 0 来填充前导位。

由于我们将 raxrbx 的输出字段宽度都设置为 15 个字符,无论第一个变量 rax 的值是多少,rbx 都会在 rax 的值输出的右侧对齐。这样就实现了第二个变量固定从第五格输出的效果。