【2012统考真题】假定编译器规定int和short类型长度分别为32位和16位,执行下列C语言语句:
unsigned short x=65530; unsigned int y=x; 得到y的机器数为()。
A.0000 7FFAH
B.0000 FFFAH
C.FFFF 7FFAH
D.FFFF FFFAH
解:
将一个16位unsigned short转换成32位unsigned int,因为都是无符号数,新表示形式的高位用0填充。
16位无符号整数所能表示的最大值为65535,其十六进制表示为FFFFH,
因此x的十六进制表示为FFFFH-5H=FFFAH,及65535-60030所得的5进行相应位数十六进制的减,所以y的十六进制表示为0000 FFFAH。
排除法:也可以用排除法。先直接排除C、D,然后分析余下选项的特征。由于A、B的值相差几乎近1倍,
可采用算出0001 0000H(接近B且好算的数)的值,再推断出答案。
今日份错误勘正。