Назначить восьмеричный / шестнадцатеричный объявленный INT / UINT другой переменной

мой WIN32 (C ++) код имеет UINT, давайте назовем его число.
Значение этого UINT (или INT не имеет значения) начинаются с 0 и признается восьмеричный значение. Можно использовать стандартные операторы, а значение сохранит восьмеричную систему. То же самое возможно с шестнадцатеричным (с предыдущим 0x).
Проблема в том, что я должен использовать значение число в буфере для расчета с ним без изменения значения число. Я могу присвоить значение типа 07777 для буфера в строке объявления, но если использовать такую ​​операцию, как буфер = число значение в буфере распознается на десятичной основе.

У кого-нибудь есть решение для меня?

0

Решение

В C нет такого понятия, как «восьмеричное значение». Целые числа хранятся в двоичном виде.

Например, эти три константы:

  • 10
  • 012
  • 0xA

все имеют одинаковый тип и значение. Это просто разные обозначения — и разница существует только в вашем исходном коде, а не во время выполнения. Присвоение восьмеричной константы переменной не делает ее восьмеричной.

Например, это:

int n = 012;

сохраняет значение десять в n, Вы можете распечатать это значение в любом из нескольких форматов:

printf("%d\n", n);
printf("0%o\n", n);
printf("0x%x\n", n);

Во всех трех случаях сохраненное значение преобразуется в читаемую человеком последовательность символов в десятичной, восьмеричной или шестнадцатеричной форме.

У кого-нибудь есть решение для меня?

Нет, потому что нет реальной проблемы.

(Благодарность идет к juanchopanza за упоминание об этом в комментарии.)

6

Другие решения


По вопросам рекламы [email protected]