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

执行下列语句后变量y的值是多少,请解释unsigned short x = -1;int y = x + 1;
2025-03-01 06:41:18
推荐回答(7个)
回答1:

unsigned short x = -1; // x表示为16进制是0xFFFF
int y = x + 1; // 表示成16进制就是0xFFFF + 0x0001 = 0x00010000,也就是65536

回答2:

每种类型都是有取值范围的,unsigned short 类型的变量的取值范围是从0到很大的某个数字,具体多少忘记了,自己去查,所以把一个-1的值赋给这个类型,他会自动转为unsigned short 类型,这个是循环的,-1就变成最大值,同样的道理用在int上,自己去看看变量的取值范围再算吧

回答3:

其实不管什么类型,当字节数确定时,一个数在内存中存储的格式是一定的。在一般的WIN32系统上,short是2字节的,-1存储在内存中就是0xffff。当你指定它为unsigned short时,它的值就是0xffff=65535,于是y=65536;当你指定它为short时,0xffff表示的就是-1

回答4:

结果等于65536。计算机内部表示数的方式是以补码的形式保存的,那么16位二进制数-1在计算机中的表示方式是1111111111111111,第一位按符号位算,那么强制将其转换成无符号的短整型,计算机将这16位的二进制数认为是正数的原码(正数原码和补码一样),是2^16=65535,再加1就是65535

回答5:

编程一做就出来了。何必问别人。

回答6:

65536
65535+1

回答7:

http://zhidao.baidu.com/question/480296774.html?push=core&group=1
这有详细的回答