Приведенный ниже код заканчивается кажущимся бесконечным циклом при выводе некоторых десятичных чисел.
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);
}