Вопрос новичка: почему я не могу получить printf
для вывода двоичного числа, как оно есть, вместо его преобразования?printf как-то конвертирует двоичный код в десятичный
int gpa = 01011001;
printf("pure: %i \n", gpa);
дает выход: 266753
Как я могу получить его на выходе 01011001 или просто 1011001?
"* или просто 1011001? *" -> Использовать 'int gpa = 1011001;'. Поскольку целочисленный литерал в 'int gpa = 01011001;' начинается с 0, он считается восьмеричным числом. –
Кажется, что есть два недоразумения: 1) в C вы не можете напрямую инициализировать 'int' с литералом в двоичном формате (base-2) (как уже упоминалось: ведущий' 0' интерпретирует литерал как восьмеричное число). 2) 'int' содержит _number_, он не является двоичным, десятичным, восьмеричным или каким-либо другим. Если вы хотите отобразить такой номер, вам нужно решить, в какой базе должно быть строковое представление: 'printf ("% i ")' отображает число в десятичном формате. –
Тот факт, что вы используете только 1 и 0 в этом значении, не делает его двоичным «в глазах компилятора» (вы действительно ожидали, что компилятор сможет рассказать, какую базу вы используете в соответствии с цифры ???). –