int 类型的最高位表示正负,是符号位,但是unsigned int的最高位是有效数位。
当int和unsigned int 相加时,要将int转化为unsigned int,而int小于0,因为它的最高位是符号位,为1,所以转化的结果是一个很大的正数,两个正数相加,结果自然大于0了。
但是如果是这种情况:
unsigned int a = 4;
int b = -19;
int z = a+b;
它把a+b的结果看作一个int类型,而a+b最高位为1,所以z是一个负数。
int 类型的最高位表示正负,是符号位,但是unsigned int的最高位是有效数位。
当int和unsigned int 相加时,要将int转化为unsigned int,而int小于0,因为它的最高位是符号位,为1,所以转化的结果是一个很大的正数,两个正数相加,结果自然大于0了。
但是如果是这种情况:
unsigned int a = 4;
int b = -19;
int z = a+b;
它把a+b的结果看作一个int类型,而a+b最高位为1,所以z是一个负数。