Erebus_22 Ответов: 2

Печать шестнадцатеричного значения


Я использовал следующий код
main()
{
	int i=101;
	printf("%X",i);
}

чтобы напечатать шестнадцатеричное значение, он печатает 65 правильно, но когда я добавляю дополнительный 0 слева, т. е.
int i=0101;

выход меняется на 41, Когда вы смотрите дважды, это 65 в шестнадцатеричном формате, почему именно поэтому двойное преобразование?

Что я уже пробовал:

код был запущен для обоих целочисленных значений, то есть i=0101 и i=101;

2 Ответов

Рейтинг:
1

jeron1

Добавление ведущего нуля делает его похожим на восьмеричное представление.


Erebus_22

Так что же насчет 0111, который дает выход как 49

Erebus_22

спасибо я понял

jeron1

хорошо!

Рейтинг:
0

Patrice T

Цитата:
int i=0101;
Лидерство 0 означает восьмеричное (основание 8), ведущее 0b означает двоичный (основание 2) и ведущий 0x означает шестнадцатеричное число (основание 16).

Думаю, лекция по основам не повредит.

Вот ссылки на справочники книг по С и с++ авторов этих языков. Язык программирования Си - Википедия, свободная энциклопедия[^]
https://hassanolity.files.wordpress.com/2013/11/the_c_programming_language_2.pdf[^]
http://www.ime.usp.br/~ПФ/Керниган-Ритчи/с-Программирование-электронные книги.формат PDF[^]