考虑以下C语言代码:
unsigned short usi=65535;
short si=usi;
执行上述程序段后,si的值是
A.-1 B.-32767 C.-32768 D.-65535
short型占4B也就是16bit,65535 = 2^16 - 1 = 65536 - 1,机器码(补码)表示为FFFFH
将usi赋值给带符号short变量si,机器码表示为FFFFH(最高位符号位为1,负数),剩下的15位均为1,那么表示的是 - ( 2^15 - 1 ) = - 32767 (注:2^15 = 32768)
-32767的15位数值表示的补值是-1,那么si表示的值为-1。
看到65535,要能知道2^16 = 65536
所以unsigned short usi=65535;// 1111 1111 1111 1111
A
用户登录可进行刷题及查看答案
登录后提交答案