Являются ли спецификаторы преобразования "x" и "u" printf/scanf одинаково применимыми к одним и тем же типам?
Предположим, у меня есть
printf("%llu %llx", one, two);
а потом оба one
а также two
может быть типа unsigned long long
и разница будет просто в том, что они печатаются как десятичные или шестнадцатеричные соответственно.
Там целая куча спецификаторов ширины (h
, hh
, L
, I
и т. д.) и похоже, что каждый из них может быть использован как с u
а также x
спецификатор преобразования, но каждый раз мне разрешено передавать значения беззнакового типа правильной ширины.
Правда ли это, что независимо от того, заканчивается ли это x
или в u
с одним и тем же спецификатором ширины впереди, я могу передавать значения одного и того же времени, и это всегда будет разрешено?
1 ответ
Правда ли это, что независимо от того, заканчивается ли это
x
или вu
с одним и тем же спецификатором ширины впереди, я могу передавать значения одного и того же времени, и это всегда будет разрешено?
Да, если спецификатор ширины действителен для использования с одним из них, то он действителен для использования с обоими, а также с o
а также X
и получающиеся в результате директивы обслуживают один и тот же тип данных - целое число без знака указанной ширины. Единственная разница заключается в том, как форматируется вывод (или для scanf
, формат, который ожидается от ввода).
Там целая куча спецификаторов ширины (
h
,hh
,L
,I
и т. д.) и похоже, что каждый из них может быть использован как со спецификатором преобразования u, так и с x, но каждый раз, когда мне разрешено передавать значения беззнакового типа правильной ширины.
Там действительно есть широкий спектр спецификаторов ширины. Большинство из них, но не все, применимы к целочисленным типам и предназначены для целочисленных типов, причем оба беззнаковых соответствуют x
, X
, o
, а также u
и подписанные, соответствующие d
а также i
, Стандарт не указывает L
среди тех, однако, и это не указывает I
совсем. Тем не менее, некоторые реализации могут принимать их как спецификаторы целочисленной ширины с поведением, зависящим от реализации.