一个C语言程序在一台32位机器上运行。程序中定义了三个变量x y和x 其中x和z是int型 y为slaort型。

大学 程序,变量,定义 已帮助 人

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

A.x=0000007FH,y=FFF9H,z=00000076H

B.x=0000007FH,y=FFF9H,z=FFFF0076H

C.x=0000007FH,y=FFF7H,z=FFFF0076H

D.x=0000007FH,y=FFF7H,z=00000076H

请帮忙给出正确答案和分析,谢谢!

热搜:c语言中一个字符占几个字节

答案解析

难度★★☆ 搜索
  • 正确答案:D
    结合题干及选项可知,int为32位,short为16位;又C语言的数据在内存中为补码形式,故x、y的机器数写为十六进制为0000007FH、FFF7H;执行z=x+y时,由于x为int型,y为short型,故需将y的类型强制转换为int,在机器中通过符号位扩展实现,由于y的符号位为1,故在y的前面添加16个1,即可将y强制转换为int型,其十六进制形式为FFFFFFF7H;然后执行加法,即0000007FH+FFFFFFF7H=00000076H最高位的进位1自然丢弃)。故选D。