求解unsigned int取值范围最大数字有问题

/已知unsigned int的取值范围是大于0,为什么我的输出是-1,请问一下错误在哪里/
#include

int main()
{
unsigned int a = 1;
while(a>0){
a++;
}
while(a==0){
printf("%d",a-1);
break;
}

return 0;

}

%d输出的就是有符号数 打印无符号数要用%u

%d是以有符号形式打印 数据 a-1在内存里是二进制补码32个1以有符号整数打印表示将这32个1看成有符号数输出其十进制原码结果就是-1 如果是%u才是以无符号形式打印则输出的就是最大值

当a==0时,循环条件依然成立,printf("%d", a-1); 肯定输出的是-1