unsigned int的意思是无符号变量,而Int是是可以带符号的,所以当unsigned int的变量和Int变量相加时unsigned int的变量符号取绝对值,然后和int的变量相加即可,如unsigned int a; a=-1; int b=1; 则a+b=2。
没有强制转换。
UINT+UINT INT+INT UINT+INT 对于加法器(CPU内部)
是完全相同的。Computer的设计者非常巧妙的统一了他们:
使用反码代替负数。
(32位INT情况下)
-1 和 0xFFFFFFF 是物理等价的。
-2 和 0xFFFFFFE 是物理等价的。
(-1)+(-2) 加法器回答是 0xFFFFFFF + 0xFFFFFFE =
0xFFFFFFFD 和(-3)是物理等价的。
所以关键是你的结果是什么类型,而不是你的2个输入是什么类型。
加法减法都没有问题。但是比较大小必须注意要同类。要看编译器了。
不得不说,上面两个网友的回答有误。
是unsigned int会隐式转换成int。
这个问题你可以自己试验下,不必问的。
隐式转换的原则就是尽量不损失数据,所以都是低有效位向高有效位,无符号向有符号转换。
int和unsigned int相加
结果会强制转成 unsigned int类型