Являются ли спецификаторы преобразования "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 совсем. Тем не менее, некоторые реализации могут принимать их как спецификаторы целочисленной ширины с поведением, зависящим от реализации.

Другие вопросы по тегам