为什么unsigned int a = 6加上int b = -14结果大于0

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是一个负数。 

                                                    

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