c语言有符号整型数与无符号整型数相加得到什么呀

unsigned int a=6;
int b=-12;
a+b与0的大小关系如何
在这样条件下呢
if(a+b>0)do something
else do other things
应该执行什么代码呢??

a+b 得到的是一个无符号数,只有在转换的条件下才返回有符号数

a+b默认返回的是无符号数,如果这样得到的是一个有符号数 int c;c=a+b;当然c>0,但a+b>0因为结果作为一个无符号数已经溢出了,所以又加了65536结果变成一个正数了
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-29
a+b默认返回的是无符号数,如果这样得到的是一个有符号数 int c;c=a+b;当然c<0,但a+b>0因为a+b=-6带有符号,已经超出了无符号数所能表示的范围了,在内存中存储的16进制补码形式为FFFA,即65530>0。

参考资料:来自上一个回答

第2个回答  2005-12-16
如果你定义int c=a+b;c=-6
如果unsigned int d=a+b;会溢出
第3个回答  2013-07-19
反正我用int i=-7;unsigned int j=5;printf("%d",(i+j));
最后输出-2.。。。。
第4个回答  2005-12-16
把无符号数转换为有符号数再相加。在这里,a+b=-6。则其与0的关系就显而易见了。
相似回答