Когда я объявляю переменную как float и вычитаю два шестнадцатеричных числа, я всегда получаю разные ответы каждый раз, когда компилирую и запускаю его. Где, если я объявляю целочисленную переменную, результат остается неизменным каждый раз, когда я компилирую и запускаю код. Я не понимаю, почему результат сохраняется в обращении изменяется каждый раз, я компилировать с разницей тех же двух чисел (0xff0000 - 0xFF7FF)Вычитание гексадецималов
int main()
{
float BlocksLeft = 0xFF0000 - 0xFF7FF;
int BLeft = 0xFF0000 - 0xFF7FF;
printf("%08x\n", BlocksLeft);
printf("%08x\n", BLeft);
}
Я использую этот онлайн компилятор http://www.tutorialspoint.com/compile_c_online.php –
Поплавок не является целым числом без знака , и поэтому '% x' является незаконным спецификатором формата для «BlocksLeft», что приводит к UB. –
Чтобы напечатать 'float' и увидеть все его значение, попробуйте' printf («%. 9e \ n», BlocksLeft), ''% 08x' для целых чисел без знака. – chux