printf каким-то образом преобразует двоичный код в десятичный

Вопрос новичка: почему я не могу получить printf вывести двоичное число как есть, а не преобразовать его?

int gpa = 01011001;
printf("pure: %i \n", gpa);

дает вывод: 266753

Как я могу получить его на выходе 01011001 или просто 1011001?

2 ответа

Решение

0 перед целочисленным литералом держится окта-десятичное число. Десятичный эквивалент 01011001 является 266753, Удалить это предыдущее 0 печатать как есть.

C не поддерживает двоичные константы (хотя отдельные компиляторы могут в качестве расширения).

Вместо этого вы можете использовать шестнадцатеричное обозначение:

int gpa = 0x59; // 01011001 binary
printf( " pure: %02x\n", gpa );

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

Другие вопросы по тегам