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

如题所述

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

不对

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-13
没有强制转换。
UINT+UINT INT+INT UINT+INT 对于加法器(CPU内部)
是完全相同的。Computer的设计者非常巧妙的统一了他们:
使用反码代替负数。

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

所以关键是你的结果是什么类型,而不是你的2个输入是什么类型。
加法减法都没有问题。但是比较大小必须注意要同类。要看编译器了。本回答被网友采纳
第2个回答  2013-10-13
不得不说,上面两个网友的回答有误。
是unsigned int会隐式转换成int。
这个问题你可以自己试验下,不必问的。

隐式转换的原则就是尽量不损失数据,所以都是低有效位向高有效位,无符号向有符号转换。
第3个回答  2013-10-13
int和unsigned int相加
结果会强制转成 unsigned int类型追问

举个例子

追答

虽然他自动转换成unsigned int 类型

但是它内存中存储的数 还是 它们相加的和
这时候 还是要看你以什么格式输出
如果定义一个
unsigned int a=0xff00 0000
%d 输出的话还是负的 -16777215
%u 的话是无符号 4278190080

他这个类型转换是为了尽量不丢失数据
但是最后的结果还是要看你怎么读

相似回答