带有宽度修饰符的 printf 无法打印值
printf with a width modifier fails to print the value
在C++程序中,在Windows 7下使用VS2013,在Ubuntu 14.04.1下使用g++ 4.6,我对printf()的操作感到困惑。
使用第二个宽度修饰符,这将打印 space 而不是 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
点应该在左边
#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
在C++程序中,在Windows 7下使用VS2013,在Ubuntu 14.04.1下使用g++ 4.6,我对printf()的操作感到困惑。
使用第二个宽度修饰符,这将打印 space 而不是 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
点应该在左边
#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