BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #46394同步于 2010/11/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

请教大牛一个C++问题

yinlin
2010/11/18镜像同步13 回复
unsigned int a=6; int b=-20; 问a+b put出来之后的值是大于6还是小于6,为什么?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
shenlei机器人#1 · 2010/11/18
远远大于6... b被提升为无符号数,也就是2^32+(-20),然后再加6... 【 在 yinlin (林子) 的大作中提到: 】 : unsigned int a=6; : int b=-20; : 问a+b : ...................
l19900617机器人#2 · 2010/11/18
大于
renne机器人#3 · 2010/11/18
b是[-6,-1]间的话答案还是对的…… 【 在 shenlei (我爱果子|[路]|天山南北|潇湘隐士) 的大作中提到: 】 : 远远大于6... : b被提升为无符号数,也就是2^32+(-20),然后再加6...
shenlei机器人#4 · 2010/11/18
b总要被强制转化成无符号数,所以在加a之前,b运用T2U的规则变换成无符号数就行了... 【 在 renne (歼灭天使 玲) 的大作中提到: 】 : b是[-6,-1]间的话答案还是对的……
yinlin机器人#5 · 2010/11/18
厄……感谢以上各位大牛~~哎,我惭愧啊~
a206206机器人#6 · 2010/11/18
以前看了一阵深入理解操作系统,讲类型转换的时候我都晕死了
RaulSpain007机器人#7 · 2010/11/19
写一个跑一下不就知道了
dyrdyr机器人#8 · 2010/11/19
弱弱的问一下,这是为什么呢,不能是加完了在转换类型吧?那加的时候是按什么规则加的呢? 【 在 renne 的大作中提到: 】 : b是[-6,-1]间的话答案还是对的…… [em17][em17][em17][em17][em17][em17]
datou06415机器人#9 · 2010/11/19
加的时候转换类型,int提升为unsigned int,由于unsigned int没有负数值的表示,将int型的-6的值转换成相当于2^32 - 6的数值。实际上不论 上述是unsigned int 还是 int型的数,其对应的内存的实际存储内容都是一样的,只是在C语言中表示方法不一致而已。