下面的代码在打印一些十进制数字时以看似无休止的循环结束。
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);
}