Назначить восьмеричный / шестнадцатеричный объявленный INT/UINT другой переменной
Мой код WIN32 (C++) имеет UINT, который можно назвать номером. Значение этого UINT (или INT не имеет значения) начинается с 0 и распознается как восьмеричное значение. Можно использовать стандартные операторы, а значение сохранит восьмеричную систему. То же самое возможно с шестнадцатеричным (с предыдущим 0x). Проблема в том, что я должен использовать значение числа в буфере для вычисления с ним без изменения значения числа. Я могу присвоить значение, например 07777, буферу в строке объявления, но если используется операция, такая как buffer = число, значение в буфере распознается по десятичной основе.
У кого-нибудь есть решение для меня?
1 ответ
В C нет такого понятия, как "восьмеричное значение". Целые числа хранятся в двоичном виде.
Например, эти три константы:
10
012
0xA
все имеют одинаковый тип и значение. Это просто разные нотации - и разница существует только в вашем исходном коде, а не во время выполнения. Присвоение восьмеричной константы переменной не делает ее восьмеричной.
Например, это:
int n = 012;
сохраняет значение десять в n
, Вы можете распечатать это значение в любом из нескольких форматов:
printf("%d\n", n);
printf("0%o\n", n);
printf("0x%x\n", n);
Во всех трех случаях сохраненное значение преобразуется в удобочитаемую последовательность символов в десятичной, восьмеричной или шестнадцатеричной форме.
У кого-нибудь есть решение для меня?
Нет, потому что нет реальной проблемы.
(Благодарность идет к juanchopanza за упоминание об этом в комментарии.)