muszę wykorzystując unie wypisać osiem bitów z bajta w tym celu zrobiłem coś takiego:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
union bit_set
{
unsigned char Char;
unsigned char x:1; //wersja 2
bool one_bit[8]; //wesja 1
};
int main()
{
union bit_set myUnion;
union bit_set *p_to_union = &myUnion;
printf("Podaj liczbe: ");
int check = scanf("%c", &(p_to_union->Char));
while (check!=1)
{
printf("Incorrect input\n");
return 1;
}
//wersja 1
for(int i = 0; i<8; i++)
{
printf("%d ", (unsigned char)*(p_to_union->one_bit+i));
}
printf("\n");
//wersja 2
for(int i = 0; i<8; i++)
{
printf("%d ", (unsigned char)(p_to_union->x+i));
}
printf("\n");
return 0;
}
jednak żaden z moich pomysłów nie zadziałał i nie wiem czemu. Proszę o wyjaśnienie błędów a nie tylko odpowiedź.
_Bool
(czylibool
zstdbool.h
) jest zdefiniowany jako integer mogący przechowywać wartości 0 i 1, i ma rank niższy niż wszystkie inne integery (w tym char). Więc raczej spodziewałbym się że jest 1-bajtowy.std::vector<bool>
z C++.