Zaprojektuj unię o nazwie byte_set, która pozwala rozbić liczbę typu int tak, aby możliwe było wyświetlenie wszystkich jej bajtów składowych. Rozmiar unii musi być równy rozmiarowi typu int natomiast liczba pól unii byte_set nie może przekroczyć dwóch.
Deklaracje unii zamieść w pliku byte_set.h.
- Jak z wyświetlonych bajtów 68 67 66 65 powstaje wartość 1094861636?
- Jak nazywa się kolejność 68 67 66 65 i 65 66 67 68?
Przykładowe poprawne wyniki programu:
Podaj liczbe: 1094861636
68 67 66 65
Podaj liczbę: 1
1 0 0 0
- Do pobierania danych od użytkownika wykorzystaj funkcję scanf, a do wyświetlania printf.
- W programie nie wolno korzystać z operatora [], oprócz deklaracji tablicy.
- W programie nie wolno używać struktur.
- W programie nie wolno używać biblioteki stdint.
- W programie nie wolno używać operatorów bitowych <<, >>, | oraz &.
byte_set.h :
#pragma once
union byte_set
{
int x;
char tab[4];
};
main:
#include <stdio.h>
#include "byte_set.h"
int main()
{
union byte_set byte_set;
printf("Podaj liczbe: ");
if(scanf("%d", &byte_set.x) != 1)
{
printf("Incorrect input");
return 1;
}
for(int i = 0; i < 4; i++)
{
printf("%02X ", *(byte_set).tab+i);
}
return 0;
}
Dlaczego w moim programie liczby te nie wyświetlają się tak jak powinny?