带有宽度修饰符的printf无法打印该值

printf with a width modifier fails to print the value

本文关键字:printf 打印      更新时间:2023-10-16

在C++程序中,在使用VS2013的Windows 7和使用g++4.6的Ubuntu 14.04.1下,我对printf()的操作感到困惑。

使用第二个宽度修改器,可以打印一个空格而不是0。
当设置为另一个值时,例如-1,它会打印它。如果没有修饰符,它会按预期打印0。

我把实际的、相关的代码粘贴到另一个程序中,它的行为也是一样的。

可能是什么问题?

#include <stdio.h>
int main(){
    int x = 1, z = 0;
    printf ("%2.d: %2.dn", x, z); // fails to print 0
    printf ("%2.d: %dn", x, z);  // 2nd %2. absent, prints as expected
    return 0;
}

输出:

 1:   
 1: 0

点应指向左侧

#include <stdio.h>
int main()
{
    int x = 1, z = 0;
    printf ("%.2d: %.2dn", x, z); // fails to print 0
    printf ("%.2d: %dn", x, z);  // 2nd %2. absent, prints as expected
    return 0;
}

输出:

01: 00
01: 0