今天有一些代碼有點驚喜。我在AIX上編譯它,並將警告級別設置爲肛門,以查看可能潛伏的流氓問題。從代碼中爬出一些新東西。爲什麼「%.3i」打印前導零?
1540-2837 (W) '0' flag is disregarded when combined with
precision and 'i' printf format.
在看了這個有問題的路線後,我放了一個小程序來重現它。在多個平臺上進行測試表明它不是AIX特有的。
下面的第一個printf模仿程序中發現的內容。
#include <stdio.h>
int main(void)
{
int x = 3;
printf("Format 0.3i <%0.3i>\n", x); // prints 003, and AIX does a warning
printf("Format .3i <%.3i>\n", x); // prints 003, with no warning
printf("Format 3i <%3i>\n", x); // prints 3, with no warning.
return 0;
}
通常情況下,如果需要前導零,「03i」格式將很好地完成這項工作。
「%.3i」在這裏的真正含義是什麼?
它爲什麼會有這樣的行爲?
膠水的巨大globs。我忘了RTFM Daniel謝謝。 – EvilTeach 2009-02-19 23:01:14