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