void fun()
{
unsigned int a = 2013;
int b = -2;
int c = 0;
while (a + b > 0)
{
a = a + b;
c++;
}
printf("%d", c);
}
问打印出什么?
当a为1时,进入循环: a=1-2 进入下一次循环,此时a=-1,内存中表示为0xFFFFFFFF,但a定义为无符号整形,故认为其值为INT最大,因此a+b>0成立再入循环,
但下面a+b开始内存泄露
数据在内存中始终是以二进制形式存放的。数值是以补码表示的
数在计算机中是以二进制形式表示的。
数分为有符号数和无符号数。
原码、反码、补码都是有符号定点数的表示方法。
一个有符号定点数的最高位为符号位,0是正,1是副。
以下都以8位整数为例,