不理解,为什么输出65535,可以详细的指点吗
潘敏来 正式会员 2015-12-11 22:00:29
3071 7 0

blob.png

问题来自: 变量修饰符

共 7 个回答

    曰乐UZI 正式会员 3072天前

    首先short a,的内存是2,这个原理你知道吧

    曰乐UZI 正式会员 3072天前

    然后,输出a-1的short类型的十六进制数,而a-1的结果为-1,-1在计算机中是以补码的形式存在的,而一个字节能存-2*2^31+2*2^31,最后得出了65535这个值

    黄建聪 资深达人 3072天前

    short a,是短整型,所以a这个变量占的内存空间是2个字节。unsigued是无符号,没有正负号,short数据范围是-32767~32767,所以数据变为0 ~ 2^16-1 ,一共可以保存 65536 个整数,a-1=65536-1=65535

    潘敏来 正式会员 3072天前

    回复 曰乐UZI:这个理解的

    曰乐UZI 正式会员 3072天前

    回复 潘敏来:简单的说就是规定如此,比如你输出格式换成%d就会输出-1,不需要深究的

    曰乐UZI 正式会员 3072天前

    回复 黄建聪:就好比1+1为什么等于2,这个不是我们该去验证的

    嘿嘿大人 一代宗师 3071天前

    首先你要知道无符号短整形变量能表达的范围是0~65535,里面是不包括-1的,你可以把这个范围想象成一个首位相连的圈,这样你就能明白为啥0-1是等于65535了;

    blob.png

您还没有登录,所以不能回复该问题
我要回复

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题