[Comm] А я тут багу в printf(3) нашел :-) (take two)
Alexey Morozov
=?iso-8859-1?q?morozov_=CE=C1_novosoft=2Eru?=
Вт Июл 15 13:54:35 MSD 2003
Выдержка из man 3 printf (секция the field width):
Instead of a decimal digit string one may write `*' or `*m$' (for some
decimal integer m) to specify that the field width is given in the next
argument, or in the m-th argument, respectively, which must be of type int.
Внимание, вопрос:
что согласно этой доке напишет
printf("%0*d %d %d %d\n", 2, 4, 8, 16);
printf("%0*1$d %d %d %d\n", 2, 4, 8, 16);
printf("%0*2$d %d %d %d\n", 2, 4, 8, 16);
?
Полученный мной результат меня несколько удивил (в первую очередь, своей
нелогичностью). Что самое смешное, этот результат совпадает на Linux
(glibc-2.2.6), FreeBSD (4.8-STABLE) и MS Windows 2000 (MS VC++ 6). Я так
понимаю, пора заполнять lawsuit "SCO против всех", в котором говорить, что
printf украден, потому что совместим по багам :-).
P.S. Но в MSDN, по крайней мере, дока про '*' соответствует истине ('*m$' не
задокументирован вовсе)
--
С уважением,
Алексей Морозов
Подробная информация о списке рассылки community