谁能帮忙解释一下为什么选A呢
2个回答
展开全部
这个就要从汇编的角度来说了,C语言和汇编语言关系密切,你在c语言里定义的函数变量,在目标文件中和运行内存中都是以相同的顺序存储的,明天给你调试看一下,手头上没有设备现在。
输入是
里面的地址值是十六进制下的数字,至于DS:,这个是16位CPU实模式环境下的运行时的内存地址
在这个环境里,作为无符号数0xFFEC(65535-16-3=65516)其实没有0xFFEE大(65535-16-1=65518),但是(为什么呢,因为这个环境虽然使用20位地址,采用段地址*4+偏移量(DS:FFEC e.g.)的,但是运算器只能处理16位,加这么大的数,多出来的高位只能丢失,最后效果就是减去,当补码用了)作为有16位符号数(补码)0xFFEC是-20,0xFFEE是-18,于是在这里,有&x大于&y
(当然换个编译器是怎么样我就不知道了,感兴趣可以看反向工程/反汇编的代码)
e.g.
(只是做个例子,32/64位的devc++与gdb跑不了,只好用这个)
还有输出
还有汇编效果
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询