Печать байтов int в объединении C

Как я могу напечатать байты int, если число 255 должно быть 255, а не -1? Я вижу, что когда я сканирую 128, моя программа печатает -128, но когда я сканирую 127, моя программа печатает 127. Что я могу сделать, чтобы печатать 128 как 128.

    #include <stdio.h>
    union byte_set{
    int x;
    char tab[4];
    };
    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("%02d ", *(byte_set.tab+i));
        }
        return 0;
     }

person ResCrove    schedule 30.11.2020    source источник
comment
Кажется, не хватает scanf вместо tab?   -  person Tom Myddeltyn    schedule 30.11.2020


Ответы (1)


Измените тип поля tab на unsigned char. Тогда они будут иметь правильные значения.

union byte_set{
    int x;
    unsigned char tab[4];
};
person dbush    schedule 30.11.2020