谁能帮忙解释一下为什么选A呢

 我来答
小菜鸟2无聊写代码
2019-10-13 · TA获得超过1058个赞
知道小有建树答主
回答量:932
采纳率:87%
帮助的人:164万
展开全部

这个就要从汇编的角度来说了,C语言和汇编语言关系密切,你在c语言里定义的函数变量,在目标文件中和运行内存中都是以相同的顺序存储的,明天给你调试看一下,手头上没有设备现在。

这个东东是BC编译器跑的

输入是

里面的地址值是十六进制下的数字,至于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跑不了,只好用这个)

还有输出

还有汇编效果

更多追问追答
追答
而m 返回值类型是int*,两个参数类型都是int*,比较起地址的大小,自然是定义在b前面的a的地址更靠前一点。而且“,”也有依次从左到右进行计算的意思。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刀唯野5
2019-10-12 · 超过11用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:25.2万
展开全部
这个答案有错,代码验证选择B
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式