c++初学者求高手解答一个问题

执行下列语句后变量y的值是多少,请解释unsignedshortx=-1;inty=x+1;... 执行下列语句后变量y的值是多少,请解释
unsigned short x = -1;
int y = x + 1;
展开
 我来答
冰清翔龙
2012-09-24 · 超过15用户采纳过TA的回答
知道答主
回答量:31
采纳率:100%
帮助的人:39.5万
展开全部
unsigned short x = -1; // x表示为16进制是0xFFFF
int y = x + 1; // 表示成16进制就是0xFFFF + 0x0001 = 0x00010000,也就是65536
百度网友b27e54b2d
2012-09-24 · TA获得超过459个赞
知道小有建树答主
回答量:161
采纳率:66%
帮助的人:161万
展开全部
每种类型都是有取值范围的,unsigned short 类型的变量的取值范围是从0到很大的某个数字,具体多少忘记了,自己去查,所以把一个-1的值赋给这个类型,他会自动转为unsigned short 类型,这个是循环的,-1就变成最大值,同样的道理用在int上,自己去看看变量的取值范围再算吧
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦回新阿尔卑
2012-09-24 · 超过21用户采纳过TA的回答
知道答主
回答量:53
采纳率:100%
帮助的人:34.9万
展开全部
其实不管什么类型,当字节数确定时,一个数在内存中存储的格式是一定的。在一般的WIN32系统上,short是2字节的,-1存储在内存中就是0xffff。当你指定它为unsigned short时,它的值就是0xffff=65535,于是y=65536;当你指定它为short时,0xffff表示的就是-1
追问
-1在unsigned short中的值不是16个1么 那他加上1不就变成1后面17个0了? 为什么是65536?
追答
加上1以后是1后面16个0,这个数就是65536
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
eiilpux17
2012-09-24 · TA获得超过802个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:432万
展开全部
结果等于65536。计算机内部表示数的方式是以补码的形式保存的,那么16位二进制数-1在计算机中的表示方式是1111111111111111,第一位按符号位算,那么强制将其转换成无符号的短整型,计算机将这16位的二进制数认为是正数的原码(正数原码和补码一样),是2^16=65535,再加1就是65535
更多追问追答
追问
为什么11111111111111111会转变为2^16?
追答
应该是2^16-1=65535
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
芸芸众生dn
2012-09-24 · 超过17用户采纳过TA的回答
知道答主
回答量:117
采纳率:0%
帮助的人:51.7万
展开全部
编程一做就出来了。何必问别人。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伯林根塔楼
2012-09-24
知道答主
回答量:8
采纳率:0%
帮助的人:4万
展开全部
65536
65535+1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-09-24
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式