Skrócenie kodu

0

Mam pytanie odnośnie kodu, czy da się go skrócić tak, aby nie trzeba było wypisywać wszystkich tych printfów, domyślam się, że można to zrobić używając wskaźnika, jednak nie bardzo wiem jak to zrobić. I dodatkowo w kodzie musi zostać użyta unia.

#include <stdio.h>
#include<string.h>
#include <stdlib.h>
//22356548
struct u
  {
    unsigned char bit1 : 1;
    unsigned char bit2 : 1;
    unsigned char bit3 : 1;
    unsigned char bit4 : 1;
    unsigned char bit5 : 1;
    unsigned char bit6 : 1;
    unsigned char bit7 : 1;
    unsigned char bit8 : 1;
  };
    union bit_set
    {
        unsigned char p;
        struct u bits;
    };
int main()
{

    union bit_set e;
    printf("tekst");
    scanf("%hhu",&e.p);
    printf("%d ",e.bits.bit8);
    printf("%d ",e.bits.bit7);
    printf("%d ",e.bits.bit6);
    printf("%d ",e.bits.bit5);
    printf("%d ",e.bits.bit4);
    printf("%d ",e.bits.bit3);
    printf("%d ",e.bits.bit2);
    printf("%d ",e.bits.bit1);


    return 0;
}
0

W przypadku pól bitowych nie jesteś w stanie wiele zdziałać, nie możesz nawet wziąć ich adresu.

0

Czyli taka forma raczej nie ulegnie zmianie?Pytam bo dla takiego inta w podobny sposób musiałbym wypisać 32 printfy.

0

Możesz trzymać to w unii z uint32_t i wypisać w pętli bity tej wartości - przy czym kolejność tych bitów może być różna w różnych architekturach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1