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

时间:2015-02-25 18:12:51

标签: c++ printf column-width

在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.d\n", x, z); // fails to print 0
    printf ("%2.d: %d\n", x, z);  // 2nd %2. absent, prints as expected
    return 0;
}

输出:

 1:   
 1: 0

1 个答案:

答案 0 :(得分:3)

这一点应该转到左边

#include <stdio.h>

int main()
{
    int x = 1, z = 0;
    printf ("%.2d: %.2d\n", x, z); // fails to print 0
    printf ("%.2d: %d\n", x, z);  // 2nd %2. absent, prints as expected
    return 0;
}

输出:

01: 00
01: 0