Как порядок цикла влияет на манипуляции с битами для этого случая в C?

Приведенный ниже код заканчивается кажущимся бесконечным циклом при выводе некоторых десятичных чисел.

int main(){
    show(0xBADECAFU);
}

void show(unsigned a){
    unsigned pos=0;
    for(; pos<UINT_MAX; pos++)
        printf("%u", (1U<<pos) & a);
}

В приведенном ниже коде показаны биты шестнадцатеричного числа. Почему первая программа работает неправильно, а второй нет?

int main(){
     show(0xBADECAFU);
}

void show(unsigned n){
    unsigned pos=31, count=1;
    for(; pos!=UINT_MAX; pos--, count++){
        printf("%u", n>>pos & 1U);
}
0
задан StuperUser 30 June 2015 в 12:16
поделиться