Код:Как объяснить этот вывод программы C
int main()
{
unsigned int a = 0xfffffff7;
char *b = (char *)&a;
printf("%08x",*b);
}
выход: fffffff7
. Моя машина малоподвижная. Конечно, я знаю, что *b
равно 0xf7
, но я не знаю, почему вывод printf()
выглядит следующим образом.
Что вы ожидали? – TGO
'% 08x' запрашивает шестнадцатеричный символ шириной 8 символов с начальными нулями. И при печати символа в виде целочисленного типа перед печатью он расширяется до int. –
Почему выход не 000000f7 –