Я имею в виду, например, %s
и %d
. Почему требуется, чтобы тип данных был определен в формате? Например, почему бы не иметь %@
для любого типа? Обратите внимание, что это общий вопрос для любого языка программирования с функцией форматирования, такого как Java.
В C функция не знает типы данных, которые ей были переданы, поэтому она полагается на эти строки формата для их определения. В java тип данных передается, здесь он действует как своего рода отказоустойчивый на случай, если вы что-то напутали. Кроме того, поскольку некоторые параметры форматирования зависят от типа данных, все они не могут использоваться с вашим %@
, поэтому %@
будет очень ограниченным спецификатором, требующим больших усилий (определения типа) для работы.
%04x
или %6.2f
полезны, и в этих случаях кажется целесообразным резервирование. А еще есть альтернативный MessageFormat
с параметрами {}
- и интернационализация (числа с разделителями тысяч и тому подобное).
Вы имеете в виду
%s
, который печатает строковую версию для любого типа объекта?