求下面代码的运行结果:
#include<stdio.h>
int main()
{
unsigned int i;
for (i = 9; i >= 0; i--)
{
printf("%u\n", i);
}
return 0;
}
结果:打印完9 8 7 6 5 4 3 2 1 0 后死循环
原因:
i是一个无符号数,所以只能表示非负数,永远也不可能小于0,进而陷入打印的死循环。至于为什么后边打印非常的的数是因为0 - 1回向前借位,然后二进制变成11111111 11111111 11111111 11111111,即4294967295。
因此以后在进行数学计算时不可以随意使用unsigned int 类型。