Anonygeeker Ответов: 2

Добавление 0 к целому числу в C


Привет,

У меня есть целое число как 123.
Как добавить к этому 0 и получить 0123 .
Я не хочу просто печатать. Я хочу постоянно добавлять 0.
Как это сделать?
заранее спасибо

Что я уже пробовал:

Я не могу даже попытаться. Я могу распечатать его точно так же, как %04d, но не могу назначить в качестве значения

2 Ответов

Рейтинг:
1

OriginalGriff

Ты не можешь.
Числа хранятся не так: они хранятся в ячейке памяти, которая имеет фиксированное число битов, обычно кратное 8: 8 бит (байт), 16 бит (короткий), 32 бита (int или int32), 64 бита (длинный или int64). И в этой памяти всегда используются все биты - они всегда либо ноль, либо единица в зависимости от числа, которое хранится.
Чтобы сохранить число 1 в 16 - битном (коротком) значении-потому что его легче записать здесь, чем 32 - битное целое число, - вы получите:

0000000000000001
За 123 вы получите
0000000001111100
Как вы можете видеть, у вас уже есть значительное количество "ведущих нулевых" значений в вашем номере!

Числа (независимо от размера или типа - float, double и decimal значения также хранятся в виде битовых значений) не имеют понятия ведущих нулей, они доступны только при применении форматирования к числу, когда оно преобразуется в строку (обычно для представления пользователю).

Вы не можете добавить "ведущий ноль" к целому числу, которое сохраняется, пока оно остается числом: 0123-это то же самое целое число, что и 000000000000123 или 123


Рейтинг:
1

CPallini

Цитата:
Я не могу даже попытаться. Я могу распечатать его точно так же, как %04d, но не могу назначить в качестве значения

Вы можете сделать это только с помощью строка, то есть представление числа. Например

int a = 123;
char sa[5];
snprintf(sa, sizeof(sa), "%04d",a);