Используя scanf, каждый набираемый номер, я хотел бы, чтобы моя программа
выведите две строки: например
byte order: little-endian
> 2
2 0x00000002
2.00 0x40000000
> -2
-2 0xFFFFFFFE
-2.00 0xC0000000
Я могу заставить его распечатать 2 в гексе
но мне также нужен поплавок и, конечно, я не могу Scanf как один
когда мне нужно также сканировать как INT
Если я разыгрываю плавающее число, когда пытаюсь напечатать, я получаю ноль. Если я сканирую как поплавок
я получаю правильный вывод. Я пытался преобразовать Int в
float, но он по-прежнему равен нулю.
вот мой вывод
Int - float - hex
byte order: little-endian
>2
2 0x000002
2.00 00000000
похоже, я конвертирую в штраф
почему он не печатает как гекс?
если я сканирую как float, я получаю правильное шестнадцатеричное представление, как в первом примере.
это должно быть что-то простое. мне нужно сканировать как десятичное
иметь ввиду
я запускаю это в cygwin
вот что у меня есть до сих пор ..
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int HexNumber;
float convert;
printf("Int - float - hex\n");
int a = 0x12345678;
unsigned char *c = (unsigned char*)(&a);
if (*c == 0x78)
{
printf("\nbyte order: little-endian\n");
}
else
{
printf("\nbyte order: big-endian\n");
}
printf("\n>");
scanf("%d", &HexNumber);
printf("\n%10d ",HexNumber);
printf("%#08x",HexNumber);
convert = (float)HexNumber; // converts but prints a zero
printf("\n%10.2f ", convert);
printf("%#08x", convert); // prints zeros
return 0;
}