c-C -(a +1) == ( a +1) 都可以成立?

作者:用户 来源:互联网 浏览:317 次 时间:2016-06-29 18:13:06

c

c-C   -(a +1) == ( a +1) 都可以成立? - 摘要: C-(a+1)==(a+1)都可以成立?--..这是为什么?-1等于二进制11111111....11111111>>1,高位还是补1,等于还是-1转换成unsignedint是42949

问题描述

C -(a +1) == ( a +1) 都可以成立?

c-C   -(a +1) == ( a +1) 都可以成立?-有a b c d成立
--..这是为什么?

解决方案

  -1等于二进制11111111....11111111
>>1,高位还是补1,等于还是-1
转换成unsigned int是4294967295因为又被a接收,还是-1
a+1=0
所以-0==0
解决方案二:

数据溢出了,能够表示的范围为:-2147483648 ~ 2147483647 。涉及补码的知识。
html" rel="nofollow">http://www.cnblogs.com/felixfang/p/3539289.html

解决方案三:
 int x = (unsigned int)y;
其实是int x = (int)(unsigned int)y;
注意,其中有一个隐式的类型转换,所谓隐式就是可以不写,但是你不能忽视它的存在。
表面上看你试图将y转换成unsigned,但是因为x是int类型,所以又转回去了。
另外就是 (unsigned int)的优先级最低,x>>1的时候,其实还是有符号位移
解决方案四:
 -1等于二进制11111111....11111111
>>1,高位还是补1,等于还是-1
转换成unsigned int是4294967295因为又被a接收,还是-1
a+1-0
所以-==0
解决方案五:
 -1等于二进制11111111....11111111
>>1,高位还是补1,等于还是-1
转换成unsigned int是4294967295因为又被a接收,还是-1
a+1=0
所以-1==0
解决方案六:

-1等于二进制11111111....11111111

1,高位还是补1,等于还是-1
转换成unsigned int是4294967295,数据溢出
a+1=0
所以-0==0

解决方案七:

移位后,数据溢出,请看看补码的资料。
这种代码很少看到,基本上是学习和测试不同变量的溢出条件

解决方案八:

支持 caozhy的!

解决方案九:

支持 caozhy的!

【云栖快讯】诚邀你用自己的技术能力来用心回答每一个问题,通过回答传承技术知识、经验、心得,问答专家期待你加入!  详情请点击
云栖社区(yq.aliyun.com)为您免费提供c-C -(a +1) == ( a +1) 都可以成立?相关信息,包括 c 的信息 ,所有c-C -(a +1) == ( a +1) 都可以成立?相关内容均不代表云栖社区的意见! 该页面h5页面的地址是:https://m.aliyun.com/yunqi/wenzhang/show_50962,您可以点击c-C -(a +1) == ( a +1) 都可以成立?-手机站访问。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备

热点导航