考虑以下C语言代码:
unsigned short usi = 65535; short si = usi;
执行上述程序段后,si的值是
A.-1
B.-32767
C.-32768
D.-65535
unsigned short为16位无符号短整型,表示范围为0~65535,usi = 65535 = 1111 1111 1111 1111B。short为16位有符号短整型,表示范围为-32768~32767,用补码表示,[si]补=1111 1111 1111 1111B,[si]原=1000 0000 0000 0001B=-1。
解答:
方法一:二进制计算
用户登录可进行刷题及查看答案
本题选A。
方法二:十进制计算
unsigned short为16位无符号短整型,表示范围为0~65535,short为16位有符号短整型,表示范围为-32768~32767,两者表示范围大小均为65536,65535强转为short后溢出,负向偏移65536得65535-65536=-1。
登录后提交答案