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