一个C语言程序在一台32位机器卜运行。程序中定义了三个变量x、y和z,其中x和z为int型,y为short型。当x=127,y=一9时,执行赋值语句z=x+y后,x、y和z的值分别是____。

admin2013-04-26  42

问题 一个C语言程序在一台32位机器卜运行。程序中定义了三个变量x、y和z,其中x和z为int型,y为short型。当x=127,y=一9时,执行赋值语句z=x+y后,x、y和z的值分别是____。

选项 A、x=0000007FH,v=FFF9H,z=00000076H
B、x=0000007FH,v=FFF9H,z=FFFF0076H
C、x=0000007FH,v=FFF7H,z=FFFF0076H
D、x=0000007FH,v=FFF7H,z=00000076H

答案D

解析 考查符号位的扩展。结合题干及选项可知,int为32位,short为16位;又C语言的数据在内存中为补码形式,故x、y的机器数写为0000007FH、FFF7H。执行Z=X+y时,由于x是int型,y为short型,故需将y的类型强制转换为int,在机器中通过符号位扩展实现,由于y的符号位为l,故在y的前面添加16个1,即可将y强制转换为int型,其十六进制形式为FFFFFFF7H。然后执行加法,即0000007FH+FFFFFFF7H=00000076H,其中最高位的进位1自然丢弃。故选D。
转载请注明原文地址:https://kaotiyun.com/show/Kwxi777K
0

最新回复(0)