У меня есть переменная типа size_t
, и я хочу напечатать ее с помощью printf()
. Какой спецификатор формата я использую для его печати?
В битовой машине 32- %u
кажется правильным. Я скомпилировал с g++ -g -W -Wall -Werror -ansi -pedantic
, и не было никакого предупреждения. Но когда я компилирую этот код в битовой машине 64-, он выдает предупреждение.
size_t x = <something>;
printf( "size = %u\n", x );
warning: format '%u' expects type 'unsigned int',
but argument 2 has type 'long unsigned int'
Как и ожидалось, предупреждение исчезнет, если я изменю его на %lu
.
Вопрос в том, как мне написать код, чтобы он компилировал предупреждение на битовых компьютерах 32- и 64-?
Изменение: В качестве обходного пути, я думаю, один из ответов может быть "привести" переменную в целое число, которое является достаточно большим, скажем, unsigned long
, и печатать с использованием %lu
. Это будет работать в обоих случаях. Я смотрю, есть ли другая идея.