C语言: int和unsigned int相加会是什么情况?

2024年11月28日 21:53
有4个网友回答
网友(1):

unsigned int的意思是无符号变量,而Int是是可以带符号的,所以当unsigned int的变量和Int变量相加时unsigned int的变量符号取绝对值,然后和int的变量相加即可,如unsigned int a; a=-1; int b=1; 则a+b=2。

网友(2):

没有强制转换。
UINT+UINT INT+INT UINT+INT 对于加法器(CPU内部)
是完全相同的。Computer的设计者非常巧妙的统一了他们:
使用反码代替负数。

(32位INT情况下)
-1 和 0xFFFFFFF 是物理等价的。
-2 和 0xFFFFFFE 是物理等价的。
(-1)+(-2) 加法器回答是 0xFFFFFFF + 0xFFFFFFE =
0xFFFFFFFD 和(-3)是物理等价的。

所以关键是你的结果是什么类型,而不是你的2个输入是什么类型。
加法减法都没有问题。但是比较大小必须注意要同类。要看编译器了。

网友(3):

不得不说,上面两个网友的回答有误。
是unsigned int会隐式转换成int。
这个问题你可以自己试验下,不必问的。

隐式转换的原则就是尽量不损失数据,所以都是低有效位向高有效位,无符号向有符号转换。

网友(4):

int和unsigned int相加
结果会强制转成 unsigned int类型