分享C语言中的unsigned类型的一道题目

 下面的代码有什么问题?
unsigned i ;
for (i=9;i>=0;i--)
{
printf("%u\n",i);
}

 

答案:

死循环

整形数据在计算机中是用补码表表示的
当i=0时,补码为0x00000000

i--后,
补码为:0xffffffff
因为i为无符号数,所以i>=0成立(此时计算机认为i是个很大的正整数),循环继续

你可能感兴趣的:(c,语言)