printf 语句中的“%3d”是什么意思?

问题描述 投票:0回答:8

在这段代码中,符号

%3d
的作用是什么?我知道 % 表示引用变量。

这是代码:

#include <stdio.h>
int main(void)
{
    int t, i, num[3][4];
    for(t=0; t<3; ++t)
        for(i=0; i<4; ++i)
            num[t][i] = (t*4)+i+1;
    /* now print them out */
    for(t=0; t<3; ++t) {
        for(i=0; i<4; ++i)
            printf("%3d ", num[t][i]);
        printf("\n");
    }
    return 0;
}
c++ printf
8个回答
22
投票

%3d
可以细分如下:

  • %
    表示“在此处打印变量”;
  • 3
    表示“至少使用3个空格来显示,根据需要填充”;
  • d
    表示“变量将是整数”;

将它们放在一起,意思是:“打印一个整数,至少占用 3 个空格”。

请参阅 cplusplus — printf 了解更多信息。


12
投票

这是一个格式说明符,用于以三(至少)位数字 (

d
) 打印十进制数 (
3
)。

来自

man printf

可选的十进制数字字符串 指定最小字段宽度。如果 转换后的值较少 字符数大于字段宽度,则 将在左侧填充空格 (或右,如果左调整标志 已给出)填写该字段 宽度。


6
投票

看这里:

Print("%3d",X);

  • 如果 X 是 1234,则会打印
    1234
  • 如果 X 是 123,则会打印
    123
  • 如果 X 为 12,则打印
    _12
    ,其中
    _
    是前导单个空白字符。
  • 如果 X 为 1,则打印
    __1
    ,其中
    __
    是两个前导空格字符。

1
投票

启发现有答案的示例:

printf("%3d" , x);

时间:

x
已打印 1234 次
1234

x
已打印 123 次
123

x
是 12 个打印
12
,带有额外的填充(空格)

x
是 1 个打印
1
,带有两个额外的填充(空格)


1
投票

您可以指定 % 和 d(十进制)之间的字段宽度。它表示打印的字符总数。 正如另一个答案中提到的,正值会使输出右对齐,并且是默认值。 负值使文本左对齐。 示例:

int a = 3;
printf("|%-3d|", a);

输出:

|3  |

您还可以使用 * 字符将字段宽度指定为附加参数:

int a = 3;
printf("|%*d|", 5, a);

给出:

|    3|

0
投票

它是一个格式规范。 %3d 表示:将参数打印为小数,宽度为 3 位。


0
投票

从字面上看,它的意思是打印一个整数,用空格填充到三位数字。 % 引入格式说明符,3 表示 3 位数字,d 表示整数。因此,num[t][i] 的值会作为“1”、“2”、“12”等值打印到屏幕上。


0
投票

2/3 或任何整数是填充/宽度。它意味着 3 的 ex,如果我们打印 a=4 则最小 3 个空格,那么它会像 4 一样打印,这里 4 之前留下两个空格,因为它是一个字符

© www.soinside.com 2019 - 2024. All rights reserved.