这个C语言的代码是怎么执行的?

求详细执行过程... 求详细执行过程 展开
 我来答
自我编程
2019-09-15 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

结果应该是5,0。

你这个首先题目有错,"*a<*B"应该改成"*a<*b"。最后i是5,j是0,选项写反了。

运行方式:

fun函数中for循环的条件语句(*a<*b)||(getcgar()!='@'),这是一个或语句,

根据算法优化,当(*a<*b)成立的时候后面(getcgar()!='@')是不运行的!

所以只要*a<*b,循环就会一直执行,a指向地址的值(也就是i的值)不断++,b指向地址的值(也就是j的值)不断--,并且不会提示输入。

一直循环到*a<*b不成立,也就是当i变成3,j变成2的时候,开始检查条件语句getcgar(),

这时候输入ab@,就会再执行2次循环,最终变成5,0。

更多追问追答
追问
(*a)++;是怎么执行的,a=&i,那么*a就是1了,根据优先级,会先求*a,那么*a=1,这个表达式不就变成了1++吗,这不合语法,请问这怎么回事啊?
追答
(*a)++的意思是对a指向地址的值+1,是合法的。
++是赋值语句,等同于+=,也就是*a=*a+1;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式