首先short a,的内存是2,这个原理你知道吧
然后,输出a-1的short类型的十六进制数,而a-1的结果为-1,-1在计算机中是以补码的形式存在的,而一个字节能存-2*2^31+2*2^31,最后得出了65535这个值
short a,是短整型,所以a这个变量占的内存空间是2个字节。unsigued是无符号,没有正负号,short数据范围是-32767~32767,所以数据变为0 ~ 2^16-1 ,一共可以保存 65536 个整数,a-1=65536-1=65535
回复 曰乐UZI:这个理解的
回复 潘敏来:简单的说就是规定如此,比如你输出格式换成%d就会输出-1,不需要深究的
回复 黄建聪:就好比1+1为什么等于2,这个不是我们该去验证的
首先你要知道无符号短整形变量能表达的范围是0~65535,里面是不包括-1的,你可以把这个范围想象成一个首位相连的圈,这样你就能明白为啥0-1是等于65535了;
点赞
扫一扫分享朋友圈
二维码
分享
你确定要删除这个问题吗?