返回信息流int a=(int)((unsigned int)0xffffffff+(unsigned int)0xffffffff);
输出a为啥是-2,另外
char cc=0xff;
char dd=0xff;
unsigned ee=cc+dd;
输出为啥是4294967294而不是254
这是一条镜像帖。来源:北邮人论坛 / cpp / #78476同步于 2014/4/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
加减运算的相关疑惑
enjoyde
2014/4/17镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
a = int(0xfffffffe) 是-2;
cc和dd先类型提升至int, 得到(-1) + (-1) = -2;转化成无符号就是那个42...
int(0xfffffffe),第一位1为符号位,那么后面那么多1,为啥是-2,而不是一个负很多的数啊?
【 在 gaoweiwei 的大作中提到: 】
: a = int(0xfffffffe) 是-2;
: cc和dd先类型提升至int, 得到(-1) + (-1) = -2;转化成无符号就是那个42...
负数在计算机中是以补码的形式表示的。补码可以百度一下。
【 在 enjoyde 的大作中提到: 】
: int(0xfffffffe),第一位1为符号位,那么后面那么多1,为啥是-2,而不是一个负很多的数啊?